天天看點

ELK入門以及常見指令

ES的資源:

https://www.elastic.co/guide/en/elasticsearch/reference/current/getting-started.html

https://www.elastic.co/webinars/getting-started-kibana?baymax=rtp&elektra=docs&storm=top-video&iesrc=ctr

https://www.elastic.co/webinars/getting-started-logstash?baymax=rtp&elektra=docs&storm=top-video&iesrc=ctr

es預設端口9200,可以看到es的基本資訊

http://localhost:9200/

Elasticsearch: The Definitive Guide(第二個是master分支版本的權威指南)

https://www.elastic.co/guide/en/elasticsearch/guide/index.html

https://www.elastic.co/guide/en/elasticsearch/guide/master/index.html

shard代表一個索引(在主節點)存儲到N個檔案中,因為單個索引檔案,太大了,查詢将會有問題,是以分成多個檔案來儲存,其實有一種分割的味道,沒有問題。

replica代表副本,其實主要是用于高可用;避免單點故障。

擷取索引資訊(_cat并不是cat貓,而是category)

GET /_cat/indices?v

建立一個索引

PUT /customer?pretty

建立一個文檔;PUT指定ID,POST則是不指定ID建立一個文檔,ID為随機數;這裡面有個pretty?這個pretty代表pretty-print,是指傳回有好的JSON串;

修改文檔(本質是先删除後添加)

删除文檔

 DELETE /customer/_doc/2?pretty 

批量處理(批量添加,以及批量修改)

批量導入資料

查詢,注意這裡用到了_search,還有在修改的時候,這個位是“_update"。q=*代表查詢所有的文檔,sort代表按照account_number做升序(asc)排列,pretty上面介紹了。傳回結果中hits代表命中的documents,totals屬性代表了傳回條數;但是注意預設傳回10條;可以由size屬性來制定;

GET /bank/_search?q=*&sort=account_number:asc&pretty

等價查詢

如果想要從中間某段,通過指定from屬性,代表從index=n開始;如果n=5.98,系統将會向下取整,取n=5;注意在此之前都是傳回值max_score都是0,但是從這個查詢開始因為引入了查詢條件,max_score開始有值了。    

傳回指定列(Select col1,col2...)

指定檢索列(Where)

注意下面兩組查詢的差别,match和match phase之間的差别;前者是隻要有任何一個比對都是會作為檢索結果的;并根據打分結果進行排序羅列;後者則要求短語全比對,即位置之間關系必須嚴格按照mill在lane前一個位置;但是在操作中發現比如mill lane即使全比對分值也不過是13.2,這個比對是單詞能夠全部比對,比如果198 Mill2 Lane,盡管隻差一個Mill2,但是這樣一來,分值是8.3,這個和其他資料,隻比對一個Lane的分值(Mill完全比對不了)是一樣的。

bool查詢,相當于where的“and”

bool+should相當于where條件的“or”

還有where條件取反,不包含呢

還可以組合查詢

過濾器

這個過濾器是在bool查詢器裡面的;但是filter并不會觸發文檔計分;這個查詢score顯示為1是因為bool查詢導緻的文檔評分;

分組

分組相當于groupby,下面的例子就是對于字段“state”值進行分組,去count值;group_by_state預設就是按照字段聚合計算count()值;

這裡size設定為0是因為隻要聚集函數的結果,而不要查詢結果;如果設定了size>0将會将檢索結果顯示在response中;

再來一個複雜一些的,groupby做count合計之外,還做了balance字段取均值;注意均值是放在group_by_state裡面的;同時在在groupby之後,按照均值進行排序。

再上一個更加複雜的,指定範圍進行排序,同時指定了二級聚合字段(gender)

傳回的片段