ES中精確查詢被分詞字段

2021-09-23 07:56:00 字數 806 閱讀 4636

專案中,需要精確查詢的乙個es欄位,為text型別,text是要被分詞的,整個字串根據一定規則分解乙個個term。因此一般情況下,text型別的字段,不能精確查詢,keyword型別的可以使用termquery查詢。

這種情況下可以使用matchphraseprefixquery(...)來精確查詢被分詞的字段,然後再過濾一次。

**如下:

public long countbyaddress(string address) ;

searchsourcebuilder.fetchsource(querycolumnarray, null);

boolquerybuilder boolquerybuilder = new boolquerybuilder();

boolquerybuilder.must(querybuilder);

searchsourcebuilder.query(boolquerybuilder);

searchrequest.source(searchsourcebuilder);

searchresponse response = null;

try catch (ioexception e)

long count=0;

for(searchhit hit : response.gethits().gethits())

}return count;

}

上面的**邏輯是查詢有多少相同的位址。除了使用matchphraseprefixquery(...),還需使用equals或者length再做一次過濾。

es拼音分詞 大帥哥 ES查詢優化之中文分詞優化

中文的搜尋和英文的搜尋最大不同之處在於分詞,英文分詞可以通過空格,而中文的分詞則複雜很多,分詞會直接影響使用者的搜尋使用體驗,在一些大公司甚至會使用機器學習的方式進行分詞。在這篇文章中筆者主要講解es中文分詞相關的優化。網路上經常會出現一些新詞,比如 藍瘦香菇 藍瘦香菇預設情況下會被分詞,分詞結果如...

es 字段預設設為 keyword 便於查詢

改變analyzer的type為keyword 1 在elasticsearch.yml中加上 index analysis analyzer default type keyword 或index.analysis.analyzer.default.type keyword 將如上內容填到elas...

es中查詢API使用

1 boolquerybuilder中 must與should區別 must的兩個條件都必須滿足,should中的兩個條件至少滿足乙個就可以 must相當於and,should相當於or 2 querybuilders中matchquery與termquery termsquery區別 match ...