ELASTIC SEARCH LÀ GÌ

     

Elasticsearch là gì?

Elasticsearch là gì? – là 1 trong công nạm tìm tìm dựa trên gốc rễ Apache Lucene. Nó cung ứng một cỗ máy tìm kiếm dạng phân tán, có không hề thiếu công cố với một bối cảnh web HTTP có cung ứng dữ liệu JSON.

Bạn đang xem: Elastic search là gì

Elasticsearch được cải cách và phát triển bằng Java cùng được thành lập dạng mối cung cấp mở theo bản thảo Apache.

Chi tiết về Elasticsearch là gì? (ES)

Elasticsearch là một search engine.Elasticsearch được thừa kế từ Lucene ApacheElasticsearch thực chất hoặt động như một web server, có chức năng tìm kiếm lập cập (near realtime) trải qua giao thức RESTfulElasticsearch có kỹ năng phân tích cùng thống kê dữ liệuElasticsearch chạy trên vps riêng và đồng thời giao tiếp thông qua RESTful vì thế nên nó không phụ thuộc vào client viết bởi gì hay khối hệ thống hiện tại của chúng ta viết bởi gì. Nên việc tích đúng theo nó vào hệ thống bạn là dễ dàng dàng, bạn chỉ cần gửi request http lên là nó trả về kết quả.Elasticsearch là 1 khối hệ thống phân tán và có chức năng mở rộng tuyệt đối (horizontal scalability). Lắp thêm node cho nó là nó tự động auto mở rộng mang đến bạn.Elasticsearch là 1 open source được cách tân và phát triển bằng Java

Các tập đoàn đang sử dụng

WikimediaathenahealthAdobe SystemsFacebookStumbleUpon Mozilla,Amadeus IT GroupQuoraFoursquareEtsySoundCloudGitHubFDACERNStack ExchangeCenter for mở cửa ScienceReverbNetflixPixabayMotiliSophosSlurm Workload Manager

Elasticsearch chuyển động như cố kỉnh nào?

*
*
*
*

3. Shard

Shard là đối tượng người tiêu dùng của Lucene , là tập bé các documents của 1 Index. Một Index có thể được tạo thành nhiều shard.Mỗi node bao có nhiều Shard . Cũng chính vì thế Shard mà là đối tượng bé dại nhất, chuyển động ở mức tốt nhất, đóng vai trò tàng trữ dữ liệu.Chúng ta gần như không lúc nào làm việc trực tiếp với các Shard vì Elasticsearch đã support toàn bộ việc giao tiếp cũng như tự động hóa thay thay đổi các Shard khi cần thiết.Có 2 loại Shard là : primary shard và replica shard.3.1 : Primary ShardPrimary Shard là sẽ tàng trữ dữ liệu và đánh index . Sau khi đánh xong dữ liệu sẽ được vận đưa tới các Replica Shard.Mặc định của Elasticsearch là mỗi index sẽ gồm 5 Primary shard và cùng với mỗiPrimary shard thì sẽ đi kèm với 1 Replica Shard.3.2 : Replica ShardReplica Shard đúng như cái thương hiệu của nó, nó là nơi lưu trữ dữ liệu nhân phiên bản của Primary ShardReplica Shard có vai trò bảo đảm tính toàn diện của dữ liệu khi Primary Shardxảy ra vấn đề.Ngoài ra Replica Shard có thể giúp bức tốc tốc độ tra cứu kiếm vì chúng ta cũng có thể setup lượng Replica Shard nhiều hơn mặc định của ES
Instant AJAX search với Laravel với Vuejs

4. Node

Là trung tâm hoạt động vui chơi của Elasticsearch. Là nơi tàng trữ dữ liễu ,tham gia thực hiện đánh index cúa cluster cũng như thực hiện các thao tác tìm kiếmMỗi node được định danh bằng 1 unique name

5. Cluster

Tập đúng theo các nodes hoạt động cùng với nhau, phân chia sẽ thuộc thuộc tính cluster.name. Cũng chính vì thế Cluster sẽ được xác định bằng 1 ‘unique name’. Việc định danh các cluster trùng tên sẽ gây nên lỗi cho những node bởi vì vậy khi setup chúng ta cần không còn sức để ý điểm nàyMỗi cluster có một node chính (master), được lựa chọn một cách tự động hóa và rất có thể thay nạm nếu sự ráng xảy ra. Một cluster bao gồm thể gồm một hoặc nhiều nodes. Các nodes tất cả thể vận động trên cùng 1 vps .Tuy nhiên trong thực tiễn , một cluster sẽ bao gồm nhiều nodes hoạt đụng trên những server không giống nhau để đảm bảo nếu 1 server chạm chán sự vắt thì vps khác (node khác) gồm thể chuyển động đầy đủ tính năng so cùng với khi bao gồm 2 servers. Các node có thể tìm thấy nhau để vận động trên thuộc 1 cluster qua giao thức unicast.

Chức năng chính của Cluster đó đó là quyết định xem shards nào được phân bổ cho node nào và lúc nào thì dịch rời các Cluster để cân bằng lại Cluster

Ưu điểm yếu của ES

Ưu điểm

Tìm kiếm dữ liệu rất nhanh chóng, khỏe mạnh dựa trên Apache Lucene ( near-realtime searching)Có kĩ năng phân tích dữ liệu (Analysis data)Khả năng không ngừng mở rộng theo chiều ngang giỏi “vòi”Hỗ trợ kiếm tìm kiếm mờ (fuzzy), tức là từ khóa search kiếm rất có thể bị sai lỗi chủ yếu tả hay là không đúng cú pháp thì vẫn có công dụng elasticsearch trả về kết quả tốt.Hỗ trợ Structured Query DSL (Domain-Specific Language ), cung ứng việc quánh tả các câu tróc nã vấn phức hợp một cách cụ thể và rõ ràng bằng JSON.Hỗ trợ nhiều Elasticsearc client như Java, PhP, Javascript, Ruby, .NET, Python

Nhược điểm

Elasticsearch được kiến thiết cho mục đích search, thế nên với những trách nhiệm khác ngoài search như CRUD thì elastic kém nắm hơn so với các database khác ví như Mongodb, Mysql …. Do vậy người ta ít khi dùng elasticsearch làm cho database chính, mà lại thường phối hợp nó với 1 database khác.Trong elasticsearch không bao gồm khái niệm database transaction , tức là nó vẫn không bảo đảm an toàn được toàn vẹn dữ liệu trong những hoạt độngInsert, Update, Delete.Tức khi họ thực hiện đổi khác nhiều bản ghi nếu xảy ra lỗi thì sẽ tạo nên logic của bản thân mình bị không nên hay mang tới mất mát dữ liệu. Đây cũng là một phần khiến elasticsearch không phải là database chính.Không thích hợp với những khối hệ thống thường xuyên cập nhật dữ liệu. Sẽ khá tốn kém cho vấn đề đánh index dữ liệu.

Xem thêm: Ở Thực Vật, Có Hai Loại Hướng Đông Chính Là Gì, Hai Loại Hướng Động Chính Là:

Cài để ElasticSearch

Yêu cầu

Elasticsearch yêu ước Java 8 trở lên và phải tùy chỉnh thiết lập biến môi trường JAVA_HOME mang đến java, do đó trước khi cài Elasticsearch, hãy chắc chắn rằng rằng bạn đã thiết lập Java version >= 8 bên trên máy.

Kiểm tra bởi lệnh java -version để hiểu máy máy mình đã cài Java không và phiên phiên bản Java đang sở hữu là bao nhiêu. Kiểm tra biến đổi môi trường JAVA_HOME đã được tùy chỉnh thiết lập chưa bởi lệnh: echo $JAVA_HOME

Cài đặt

Download và thiết đặt Elasticsearch PGP Key bằng lệnh sau:

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key địa chỉ -Để thiết đặt Elasticsearch trên Ubuntu ta bao gồm 2 phương pháp là mua từ Repository hoặc sở hữu từ file .deb

Cách 1: phương pháp Elasticsearch bởi APT Repository

Cài gói apt-transport-https

sudo apt-get install apt-transport-httpsLưu định nghĩa repository vào /etc/apt/sources.list.d/elastic-6.x.list:

(Repository khoác định ko bao gồm elasticsearch)

echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.listCài để Elasticsearch bằng lệnh:

sudo apt-get update && sudo apt-get install elasticsearchDone!

Cách 2: thiết lập elasticsearch bằng gói .deb

Chạy các lệnh dưới đây để thiết lập và thiết lập elasticsearch bằng file .deb

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.0.debwget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.0.deb.sha512shasum -a 512 -c elasticsearch-6.4.0.deb.sha512 sudo dpkg -i elasticsearch-6.4.0.debDone!

Chạy elasticsearch.

Elasticsearch sau khi được setup sẽ không tự động chạy.

Xem thêm: Tác Dụng Phụ Khi Tiêm Filler Là Gì ? Tiêm Filler Có Hại Không?

Để khởi động, start, stop elasticsearch ta có tác dụng như sau:

Lệnh để chạy hệ thống elasticsearch$ sudo systemctl start elasticsearch.service:

$ sudo systemctl start elasticsearch.serviceLệnh khởi sinh sản 1 index, mapping trong index đó và 1 document:

$ curl -X PUT http://localhost:9200/team/_mapping/memberKhởi tạo thành công , màn hình sẽ trả về dòng

"acknowledged":true,"shards_acknowledged":true,"index":"team"Là khởi tạo thành công xuất sắc index “team”

Sử dụng câu lệnh để truy xuất dữ liệu trên ElasticSearch

Lệnh liệt kê những index có trong ES:

$ curl -X GET "localhost:9200/_cat/indices?v"Lệnh sinh sản document của index: ở đây là thêm thành viên với những trường trực thuộc tính$ curl -X PUT http://localhost:9200/team/_mapping/member?&"properties"= &"id"= "type": "text" ,&"name"= "type": "text" ,&"email"= "type": "text" ,&"age"= "type": "integer" ,&"phone"= "type": "text" ,&"image"= "type": "text" ,&"technologies"= "type" : "text" &&Lệnh kiểm tra toàn bộ index đang khởi tạo:$ curl -X GET http://localhost:9200/team?prettyLệnh thêm, sửa tài liệu vào index trên(team), ở đấy là dữ liệu vì chưng nhóm em kém chất lượng ra cùng insert vào$ curl -X PUT http://localhost:9200/team/member/_bulk?{"create"= "_id": 1, "_type": "member"&"id"= "5510ce4ee174054836ef3c5a","name": "Vargas Rosa","email": "","age": 25,"phone": "+1 (807) 530–3567","image": "http://api.randomuser.me/portraits/men/78.jpg","description": "enim Lorem upidatat et nostrud ut irure qui qui nulla qui deserunt fugiat laborum elit","technologies": "ios javascript python"&{"create"= "_id": 2, "_type": "member"&"id"= "5510ce4e24ecdab88fe18d06","name": "Navarro Thornton","email": "","age": 34,"phone": "+1 (896) 579–3364","image": "http://api.randomuser.me/portraits/men/59.jpg","description": "sit enim velit cillum magna commodo tempor","technologies": "swift erlang java"&{"create"= "_id": 3, "_type": "member"&"id"= "5510ce4e6e7bbdbc120c9a89","name": "Francine Aguirre","email": "","age": 30,"phone": "+1 (963) 492–3402","image": "http://api.randomuser.me/portraits/men/82.jpg","description": "cu et sit ullamco tempor Lorem excepteur magna pariatur","technologies": "javascript ionic ruby"&{"create"= "_id": 4, "_type": "member"&"id"= "5510ce4ebd2a509edd8c6b50","name": "Krystal Simmons","email": "","age": 40,"phone": "+1 (857) 418–2040","image": "http://api.randomuser.me/portraits/women/10.jpg","description": "ea dolor ex proident eiusmod et ut irure esse","technologies": "ruby c c" Lệnh hiển thị thông tin những dữ liệu trong document với của từng doccument sau thời điểm đã thêm$ curl -X GET http://localhost:9200/team/member/4?prettyLệnh tìm kiếm kiếm tất cả dữ liệu những document trong index thực hiện API Search$ curl -X GET http://localhost:9200/_search?pretty=trueLệnh search kiếm theo text nhập ở tất cả các trường vào document , tại đây key search của bản thân là ruby, phía trên cũng đó là điểm mạnh của Elasticsearch, nó rất khác với query like như thao tác làm việc với DB vị nó cần phải nhập tương đối đầy đủ text đó ví dụ như ruby sinh sống trên vẫn trả về những document member có text là ruby trong tất cả các field$ curl -X GET http://localhost:9200/_search?q=rubyLệnh xóa 1 index $ curl -X DELETE "localhost:9200/cuongquach-company"

Tài liệu tham khảo Elasticsearch là gì?

Vẫn còn một trong những các hoạt động, những API để cách xử lý vào thao tác làm việc với Index vào Elasticsearch, tuy nhiên với phần mày mò ở trên về một công cụ mạnh bạo như elasticsearch là đủ để hoàn toàn có thể thao tác, thực hiện và làm cho quen cùng với elasticsearch. Các bạn có thể tham khảo ở những trang bên dưới đây.