Elastic Search 學習之路(一)

1、基本概念及原因html

1.Sql vs nosqlmysql

SQL:Structured Query Languagesql

Nosql:Not only SQL數據庫

Relationship DBjson

Relations:One-to-one relation、One-to-many、Many-to-many、Self-referencewindows

Mongo DB(humongous 大量的)、Redis  .ect (內存型數據庫)api

Structure:Database Collencitons Documentsapp

 

2.爲什麼使用搜索引擎curl

項目中的搜索功能,若是數據量較小,那麼能夠直接使用mysql進行搜索;當數據量到達必定規模後,好比十億、百億,這時傳統的關係型數據庫就已經達到性能瓶頸,不適合這個項目,此時可使用搜索引擎ElasticSearch。可能你會問,爲何不用內存型數據庫。雖然內存型數據庫讀寫性能很高,可是將龐大的數據量全都裝進內存中不太現實。好比,使用PB級別的數據,每一個內存節點96G的話,那麼須要上萬個節點,再考慮到數據的備份,那麼會更多。這麼高的成本,不現實。軟件是服務於企業的,企業的目的是盈利。nosql

 

3.初步認識ElasticSearch

目前常見的搜索引擎的首選,就是開源的ElasticSearch。它能夠快速存儲、搜索和分析海量數據。它的底層是開源庫Lucene(Lucene必須手動去寫接口進行調用)。Elastic對Lucene進行了封裝,提供了基於Rest API的接口,能夠直接操做接口。

(official document path :  https://www.elastic.co/guide/en/elasticsearch/reference/current/rest-apis.html)

學習環境:elasticsearch-7.5.2  windows 10

 

3.1 基本概念

Node、Cluster

ElasticSearch的本質是分佈式數據庫,所以就會有節點(Node),一個節點至關於一個實例,一組節點構成集羣(cluster)。

IndexES會給全部存儲的數據創建索引,通過處理後會有個反向索引。查找數據時直接查找該索引。

※Document※

插入ES中的每條記錄都是一個Document。它也是使用JSON格式,多個Document構成了一個Index。

※Type※

分組的類型。

e.g. curl -X PUT "localhost:9200/customer/_doc/3?pretty" -H "Content-Type: application/json" -d "{\"name\": \"John Lee3\"}"

customer 是Index的名字。_doc是type名字。3表示該條記錄的ID,它不必定是數字,任意字符串(如:「adc」)均可以。添加數據時,也能夠不指定ID,這時,會自動添加一個隨機字符串的ID。pretty表示易讀的格式返回。

 

3.2 Get Started
(1)install path https://www.elastic.co/guide/en/elasticsearch/reference/current/install-elasticsearch.html
(2)Run bin/elasticsearch (or bin\elasticsearch.bat on Windows)
(3)Run curl http://localhost:9200/

 

3.3 memo

我照着官網學習時,用到的命令,複製下來備用。下面命令我親自執行過,沒有問題。

curl -X GET "localhost:9200/_cat/health?v&pretty"
curl -X PUT "localhost:9200/customer/_doc/3?pretty" -H "Content-Type: application/json" -d "{\"name\": \"John Lee3\"}"
curl -H "Content-Type: application/json" -XPOST "localhost:9200/bank/_bulk?pretty&refresh" --data-binary "@accounts.json"
curl -X GET "localhost:9200/customer/_doc/1?pretty"
curl "localhost:9200/_cat/indices?v"
curl -X GET "localhost:9200/bank/_search?pretty" -H "Content-Type: application/json" -d "{\"query\": { \"match_all\": {} },\"sort\": [{ \"account_number\": \"asc\" }]}"
curl -X GET "localhost:9200/bank/_search?pretty" -H "Content-Type: application/json" -d"
{
  \"query\": { \"match_all\": {} },
  \"sort\": [
    { \"account_number\": \"asc\" }
  ],
  \"from\": 10,
  \"size\": 10
}"
curl -X GET "localhost:9200/bank/_search?pretty" -H "Content-Type: application/json" -d"{  \"query\": { \"match\": { \"address\": \"mill lane\" } }}"

 

4.踩坑

1.使用curl命令時,注意事項。(環境:windows環境,在cmd.exe下執行的curl命令)

必定要注意雙引號以及轉義字符。切記。按照官網複製來的命令,會有問題。

curl -H "Content-Type: application/json" -X POST -d "{\"abc\":123}" "https://httpbin.org/post"

 

 

參考文檔:

https://blog.csdn.net/aisemi/article/details/80212836

https://www.elastic.co/guide/en/elasticsearch/reference/current/elasticsearch-intro.html      Elasticsearch official guides

http://www.ruanyifeng.com/blog/2017/08/elasticsearch.html

 

 

相關文章
相關標籤/搜索