ElasticSearch & php & mysql thực hành – Phần 4

ElasticSearch & php & mysql thực hành – Phần 4

June 10, 2015 thinhpc86 Java, PHPElasticSearch, Search Engine

Khi đã biết được các lệnh cơ bản để thao tác vs Cluster của ES, hôm nay ta sẽ xem qua 1 số API cơ bản:

1. Create index

Tạo index tên là “customer”

1

curl -XPUT 'localhost:9200/customer?pretty'

“pretty” là để curl hiển thị json response được format dễ nhìn. Dùng tool như Advanced Rest Client thì ko cần.

2. Create a type and a document:

Our JSON document: { “name”: “John Doe” }

document này thuộc type “external”. Câu lệnh tạo type và document như sau:

curl -XPUT 'localhost:9200/customer/external/1?pretty' -H "Content-Type: application/json" -d'
{
  "name": "John Doe"
}'

Trong câu lệnh trên, ta đã gán id cho document = 1. Nếu thực hiện lênh POST, ko gán id thì ES sẽ tạo 1 id tự động cho document.

curl -XPOST 'localhost:9200/customer/external?pretty' -H "Content-Type: application/json" -d '
{
  "name": "Jane Doe"
}'

Nếu trước đó ta chưa tạo index “customer” thì với câu lệnh này ta cũng có thể tạo được.

3. Get document:

Let’s now retrieve that document that we just indexed:

curl -XGET 'localhost:9200/customer/external/1?pretty'

4. Update document

curl -XPUT 'localhost:9200/customer/external/1?pretty' -H "Content-Type: application/json" -d'
{
  "name": "Lionel Pham It"
}'

Chạy cùng lệnh giống creat document với 1 id đã tồn tại thì thông tin của document sẽ được update

Hoặc dùng lệnh update chính thống:

 curl -XPOST 'localhost:9200/customer/external/1/_update?pretty'  -H "Content-Type: application/json" -d '
{
  "doc": { "name": "Jane Doe", "age": 20 }
}'

5. Xóa index

1

curl -XDELETE 'localhost:9200/customer?pretty'

6. Xóa document:

1

curl -XDELETE 'localhost:9200/customer/external/2?pretty'

Xóa nhiều document bằng cách dùng query:

1234

curl -XDELETE 'localhost:9200/customer/external/_query?pretty' -d '{ "query": { "match": { "name": "John" } }}'

6. Cấu trúc chung của request:

1

curl -X<REST Verb> <Node>:<Port>/<Index>/<Type>/<ID>

7. Xử lý hàng loạt

dùng _bulk API để xử lý hàng loạt index như sau:

curl -XPOST 'localhost:9200/customer/external/_bulk?pretty' -H "Content-Type: application/json" -d '
{"index":{"_id":"1"}}
{"name": "John Doe" }
{"index":{"_id":"2"}}
{"name": "Jane Doe" }
'
curl -XPOST 'localhost:9200/customer/external/_bulk?pretty' -H "Content-Type: application/json" -d '
{"update":{"_id":"1"}}
{"doc": { "name": "John Doe becomes Jane Doe" } }
{"delete":{"_id":"2"}}
'

Lưu ý: các bạn phải lưu ý rằng dữ liệu cho api _bulk thì cuối mỗi dòng đều kết thúc bằng 1 ký tự xuống dòng (\n), kể cả dòng cuối cùng, nếu thiếu 1 dấu xuống dòng thì câu lệnh sẽ ko thực hiện được.

8. Load data from file

Ta có thể dùng api _bulk để load data từ file json như sau:

curl -XPOST 'localhost:9200/bank/account/_bulk?pretty' -H "Content-Type: application/json" --data-binary @accounts.json

file accounts.json bạn tải về từ link này: https://github.com/bly2k/files/blob/master/accounts.zip?raw=true

mình chạy lệnh này bằng curl đã cài trong máy. Đặt file accounts.json trong cùng thư mục với elasticsearch.bat trong thư mục bin. Để cho đơn giản thì file curl.ext cũng đặt trong cùng thư mục đó, bật cmd lên rồi chạy dòng lệnh trên là được.

Nếu muốn thực hiện công việc trên bằng Postman hay Advance Rest Client thì chircos cách copy dữ liệu trong file accounts.json cho vào phần body của tool là được:

Nhưng với dữ liệu nhiều thì làm vậy không ổn. Nên tốt nhất là dùng curl là đơn giản nhất.

Bài tiếp theo ta sẽ tìm hiểu về Search Query.

Nguồn:

https://www.elastic.co/guide/en/elasticsearch/reference/1.5/_exploring_your_cluster.html

Last updated