當前位置:成語大全網 - 英語詞典 - 19、ElasticSearch 7.x 使用term配合keyword進行搜索

19、ElasticSearch 7.x 使用term配合keyword進行搜索

主要內容:使用term配合keyword進行搜索

根據用戶ID、是否隱藏、帖子ID、發帖日期來搜索帖子

?查看映射

type=text,默認會設置兩個field,壹個是field本身,比如articleID,就是分詞的;還有壹個的話,就是field.keyword,articleID.keyword,默認不分詞,會最多保留256個字符

constant_score的用處

當我們不關心檢索詞頻率TF(Term Frequency)對搜索結果排序的影響時,可以使用constant_score將查詢語句query或者過濾語句filter包裝起來。

term filter/query:對搜索文本不分詞,直接拿去倒排索引中匹配,妳輸入的是什麽,就去匹配什麽

沒有搜到任何的信息,原因參見後面1.6節的分析,需要使用keyword避免分詞查詢。

articleID.keyword,是ES內置建立的field,當插入articleID的時候,會建立兩次索引,壹次是自己本身,是要分詞的,分詞後放入倒排索引;另外壹次是基於articleID.keyword,不分詞,保留最多256個字符

所以term filter,對text過濾,可以考慮使用內置的field.keyword來進行匹配。但是有個問題,默認就保留256個字符。所以盡可能還是自己去手動建立索引,指定type=keyword即可。

默認是analyzed的text類型的field,建立倒排索引的時候,就會對所有的articleID分詞,分詞以後,原本的articleID就沒有了,只有分詞後的各個word存在於倒排索引中。

term,是不對搜索文本分詞的,XHDK-A-1293-#fJ3 會使用 XHDK-A-1293-#fJ3進行匹配。

但是articleID建立索引的時候, XHDK-A-1293-#fJ3 會分詞為 xhdk,a,1293,fj3

將1.1中的示例數據插入進來

這次可以根據keyword正常查詢到了

(1)term filter:根據exact value進行精確搜索,數字、boolean、date天然支持

(2)建索引時文本需要指定keyword,才能用term query

(3)term相當於SQL中的單個where條件

參考文章:

Elasticsearch--constant_score_大數據_u014431852的博客-CSDN博客 /u014431852/article/details/52802747