1.4、Kibana使用說明


通過訪問IP:5601即可

注:下列所有操作可結合elasticsearch-head進行學習

索引的創建刪除操作

索引其實也可以理解成是一張表

索引創建

索引創建並賦值

 索引創建及定義屬性

 這里會涉及type為text類型,除了text類型,對於字符串還可以分配keyword類型,二者區別如下:

  • keyword類型的詞語會被當成一個整體存儲

  • text類型的詞語則會被分詞器拆分進行存儲,中文是單個存儲,英文是按照空格進行,在我們進行查找的時候默認都會進行拆分,這里的拆分規則和分詞器字典無關

 索引刪除

索引文檔的增刪改操作

增加索引文檔

注:id需唯一,如果指向的是已存在的id,則會變為修改操作

修改索引文檔

雖然使用增加索引的方式也可以實現索引文檔的修改,但是其實ES也提供了update方法來進行修改

刪除索引文檔

其實刪除索引和刪除索引文檔的區別就在於是否准確指定到具體的id,未指定則就會刪除其索引

索引文檔的簡單查詢 


以下所有查詢操作都基於該索引進行查詢

 

索引文檔的條件查詢 

首先需要了解一點,我們的數據存儲形式,在不考慮分詞器的情況下

通過_analyze分析,默認text的存儲形式是進行拆分存儲,而keyword是不會進行拆分存儲,這個其實上方創建索引並賦值時就有說明

然后再來理解下Match和Term的區別

Match是模糊查詢

Match查詢時,我們的搜索詞將會被分詞進行查詢

  • 當查詢text時,由於我們一句話是會拆分存儲,搜索詞也會被分詞查詢,所以只要包含任意字的都會被查出,也就是模糊匹配
  • 當查詢keyword時,由於我們一句話是不會被拆分存儲,雖然搜索詞分詞了,但是因為存儲詞沒有進行拆分,搜索詞又必須對應上存儲詞,所以間接就成了精確匹配

Term是精確查詢

Term查詢時,我們的搜索詞將不會被分詞進行查詢

  • 當查詢text時,由於我們一句話是會拆分存儲,但是我們的搜索詞又不會被分詞,所以這時候我們只有單個字進行查詢時才對應得上存儲詞的結果,間接也就成為了模糊匹配
  • 當查詢keyword時,由於我們一句話是不會被拆分存儲,我們的搜索詞也不會被分詞,所以該情況就是精確匹配

總結

  • 查詢keyword:Match和Term查詢都需要精確匹配
  • 查詢text:Match會進行分詞查詢,模糊匹配。Term只能通過單個字去進行查詢,也是模糊匹配

注:漢語是一個字一個字分組,英文的話是以空格進行分組


通過下列例子可以進行更好的了解

Match模糊查詢

可以看出我們的搜索詞是被分詞進行查詢的,又因為text也是拆分的,所以包含”王“和包含“明"的數據都被查出來了

加上keyword后,雖然我們也是分詞查詢,但是索引數據是不拆分存儲的,所以數據無法被查出來

 更換成別的查詢條件后,可以發現,我們分詞查詢必須完全對應分詞存儲的數據,數據才會被查出來,也就是精確匹配

Term精確查詢

可以看出,我們不分詞查詢,查分詞存儲,通過以下方式,是一個都無法對應上的

只有條件為單個字的時候才可以對應上

keyword的話,搜索詞不分詞,存儲詞不拆分,就只能是精確匹配了

其他方法說明 

_source和sort 

_source代表只輸出指定屬性,sort代表按照指定屬性排序,from代表從第幾個數據開始,size代表輸出幾個

Bool多條件查詢(must_not、must、should、filter)

通過bool可以進行多條件查詢,must_not代表不匹配,must代表必須匹配,should代表只要有其中一個條件匹配即可,filter代表條件過濾器

must

must_not

filter

過濾出age大於10小於16的

should

should使用注意事項

當should和must或filter一起使用時,should就會失效,具體可參考該博客:elasticsearch bool中should must聯用問題

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM