Hướng Dẫn đọc,ghi Dữ Liệu Và Truy Vấn Dữ Liệu Trên Elasticsearch
Có thể bạn quan tâm
Chào xìn anh em!!!! Mình là Nguyễn Đức Thảo, sau cơ số ngày luyện công với thằng Elasticsearch thì cũng có năm được những khái niệm và cách làm việc với thằng Elasticsearch này!
Bài viết này được viết ra với dựa trên những thứ mà mình biết, chỉ mang tính cá nhân thoy nhe
Có rất nhiều kiến thức sâu về thằng Elastic, nhưng bài viết này chỉ xoay quanh việc làm như thế nào để truy vấn dữ liệu và CRUD với Elasticsearch!
Elasticsearch là gì?
Trước khi tìm hiểu một vấn đề gì đó thì ta phải biết nó là gì đã!
Elasticsearch là một search engine (công cụ tìm kiếm) rất mạnh mẽ.
Elasticsearch cũng có thể coi là một document oriented database (1) , nó chứa dữ liệu giống như một database và thực hiện tìm kiếm trên những dữ liệu đó.
Đại khái là thay vì bạn tìm kiếm trên file, trên các database như MySQL, Oracle, MongoDB… thì bạn chuyển dữ liệu đó sang Elasticsearch và thực hiện tìm kiếm trên Elasticsearch sẽ mang lại hiệu quả rất lớn, đặc biệt là trong những trường hợp dữ liệu lớn.
Cái này mình coppy thôi chứ cũng lười viết lắm
(1) document oriented database là gì? - Thường thì khi làm việc với các database như mysql, sql server, oracle..v..v... thì ta phải define cấu trúc cho từng table, với document oriented database thì dữ liệu hiển thị dạng dưới object JSON, chính vì thế cấu trúc của nó sẽ có thể thay đổi theo ý muốn và không có cố định nào cả. Nôm na là thế
Bắt đầu đi vào việc thêm,sửa,xóa với Elasticsearch
NOTE: Trước khi đọc phần này thì hãy đọc bài viết những khái niệm của elasticsearch để hiểu cơ bản những khái niệm của ElasticSearch nhé !
Cài đặt Elasticsearch:
- Có thể vào đây và làm theo hướng dẫn để cài trên MacOS,Linux,Window..v..v.. từ nhà sản xuất!
- Nếu bạn không muốn cài nó trực tiếp vào máy của mình thì có thể sử dụng Docker theo các bước dưới đây:
version: "3" services: elasticsearch: container_name: viet-cinema-elasticsearch image: docker.elastic.co/elasticsearch/elasticsearch:7.15.2 environment: - discovery.type=single-node - "ES_JAVA_OPTS=-Xms512m -Xmx512m" - bootstrap.memory_lock=true ports: - 9200:9200 volumes: - C:/data-es:/usr/share/elasticsearch/data kibana: container_name: viet-cinema-kibana image: docker.elastic.co/kibana/kibana:7.15.2 environment: - ELASTICSEARCH_HOSTS=http://viet-cinema-elasticsearch:9200 ports: - 5601:5601 #volumes: # data-es: # driver: ./data-es
- B1: Tạo 1 file docker-compose.yml cùng cấp với thư mục src
- B2: Coppy đoạn code này paste vào file này, nếu bạn không biết về Docker thì không cần quan tâm đến mấy dòng này
- Nhưng bạn phải cài Docker Desktop trên máy của mình trước nhé
- , cài như thế nào thì trên gg rất nhiều
- B3 : Mở terminal ở trong IDE lên và chạy lệnh docker-compose up -d và nhấn enter và đợi khi nó chạy xong!
- B4: Sau khi chạy xong bạn mở chrome lên vào truy cập vào url http://localhost:9200/ và nó ra kết quả như thế này là thành công:
- Do trên đoạn code trên mình có 1 phần là Kibana nhưng mình sẽ không dùng đến thằng này mà mình sẽ thay thế nó bằng PostMan nên các bạn cứ kệ nó ở đó đừng quan tâm đến nó
BẮT ĐẦU NÀO :
Ở trong elasticsearch sẽ public những API để ta làm việc với elasticsearch. Bắt đầu nào
API Hiển thị thông tin version, cluster
GET /
API Hiển thị chi tiết thông tin node:
GET /_cat/nodes?format=json
API liệt kê, hiển thị các Index trong Elasticsearch
GET /_cat/_indices?v
API tạo Index trong Elasticsearch
PUT /{index_name}
Cài đặt các field, số replica set, số shard khi tạo Index
PUT /index_name { "settings" : { "index" : { "number_of_shards" : 3, "number_of_replicas" : 2 } } }
Mặc định number_of_shard = 5 và number_of_replicas = 1
Lưu ý về quy tắc đặt tên Index:
- Chỉ được đặt tên index bằng chữ in thường
- Không bao gồm các ký tự , /, *, ?, ", <, >, |, (khoảng trắng / dấu cách), ,, #
- Từ Elasticsearch 7+ không được sử dụng ký tự :
- Không được bắt đầu bằng các ký tự -, _, +
- Không thể là . hoặc .., tuy nhiên có thể dùng ký tự . và kết hợp với các ký tự khác
- Không được dài hơn 255 bytes
API xóa Index trong Elasticsearch
DELETE /index_name
Xóa nhiều index trong cùng 1 request
DELETE /index_name_1,index_name_2
Xóa tất cả Index trong 1 request
DELETE /_all
API Insert, thêm dữ liệu vào Elasticsearch
Cách 1: Dùng API POSTPOST /index_name/type_name/id { "field" : "value" }
Trong đó:
- index_name và type_name là tên của Index và tên của Type, nếu chưa tồn tại thì sẽ được tự động tạo
- id là id của document được tạo, nếu không truyền id thì nó sẽ tự động tạo ra 1 chuỗi để làm id.
Trường hợp mình không truyền id thì id của document mới sẽ được tự động tạo ra.
Trường hợp index, type và id truyền vào đã tồn tại thì nó sẽ tương đương với câu lệnh update.
Cách 2: Dùng API PUTPUT /index_name/type_name/id { "field" : "value" }
API get document Elasticsearch.
GET /index_name/type_name/id
GET /index_name/type_name/id/_sourceTuy nhiên trong dữ liệu trả về có khá nhiều field không cần thiết như index name, version… Để lấy data của mỗi document ta dùng thêm thẻ _source vào sau url
Trường hợp chỉ muốn lấy 1 số field trong document ta dùng tham số_source=field1,field2
API Update document Elasticsearch.
**Cách 1: Modifiy document bằng method **PUT /index_name/type_name/id { "field": "data" }
Cách 2: Update document bằng methodPOST /index_name/type_name/id { "field": "data" }
Hãy để ý dòng Version, cái này sẽ hiển thị số lần mà ta đã update cho document
Update document bằng method POST có tác dụng tương đương với method PUT
Tuy nhiên bản chất của việc update document bằng method POST khác với method PUT ở chỗ là method PUT sẽ replace / sửa lại dữ liệu trên document đã có còn method POST là xóa document cũ đi (nếu có tồn tại) và tạo 1 document mới.
API đọc dữ liệu – Tìm kiếm dữ liệu, document Elasticsearch
Tìm tất cả document trong tất cả các indexGET /_search
HoặcGET /_all/_search
Tìm tất cả document trong 1 typeGET /_search?q=word
GET /_search?q=name:ĐứcVí dụ tìm tất cả các document có chứa từ Đức trong field name
API Xóa dữ liệu trong Elasticsearch
Cách 1: Sử dụng DELETE APIDELETE /index_name/type_name/id
Ví dụ xóa document có id = 1 nằm trong type info của index nguyen-duc-thao
Cách 2: Xóa document bằng Query API
POST /index_name/type_name/_delete_by_query { "query": { "match": { "message": "some message" } } }Để xóa document bằng Query API ta dùng method POST với thẻ _delete_by_query
Kết
Như vậy là ta đã đi qua những hướng dẫn cơ bản để làm việc với elasticsearch rồi. Ở bài viết sau mình sẽ hướng dẫn áp dụng elasticsearch vào dự án spring boot
Từ khóa » Elasticsearch Nghĩa Là Gì
-
Elasticsearch Là Gì? | Khái Niệm Cơ Bản Về Elasticsearch | TopDev
-
Elasticsearch Là Gì ? - Viblo
-
Elasticsearch Là Gì? - Viblo
-
Elasticsearch Là Gì? Kiến Thức Tổng Quan Về Elasticsearch - ITNavi
-
Elasticsearch Là Gì? - Kipalog
-
Elasticsearch Là Gì? Cách Sử Dụng Elasticsearch - Bizfly Cloud
-
Elasticsearch Là Gì? – Amazon Web Services
-
Elasticsearch Là Gì? Định Nghĩa, Khái Niệm - Làm Cha Cần Cả đôi Tay
-
Elasticsearch Là Gì? Ưu điểm Và Nhược điểm Của Elasticsearch
-
Elasticsearch Là Gì? Ưu Và Nhược điểm Của Elasticsearch - Vietnix
-
Elasticsearch Là Gì? Mô Hình, đặc điểm Và Cài đặt ... - Anonystick
-
Elasticsearch Là Gì? Những Thông Tin Hữu ích Không Thể Bỏ Lỡ
-
Giới Thiệu Và Cài đặt Elasticsearch Và Kibana Là Gì
-
Elasticsearch - Hướng Dẫn - Mới Cập Nhập - Update Thôi