elasticsearch,我用ik分詞,搜尋 寶馬2012 ,怎樣只查出即包含「寶馬」又包含「2012」的文章?

時間 2021-06-03 01:13:31

1樓:Dawn

因為搜尋的語句會預設的經過分詞,會使得搜尋寶馬2012的結果等於是搜尋寶馬+2012,再加上ES支援不完全匹配的特性,從而缺省會把其他有不完全相關的結果都找出來。 按照你的要求,可以設定搜尋語句不經過分析,這樣使得寶馬2012作為乙個整體。需要用到query中的analyzer屬性並且使用正規表示式分詞實現完全匹配。

(Query String Query)

這種方式與其他比較靈活性比較大,不用每一次搜尋類似的不同內容都更改詞典。

附:完全匹配的分析器配置方法

,"tokenizer":}}

2樓:珞珈閒人

解決問題方法有多種,@大周說了其中的一種,我擴充套件了一下,幫助樓主了解為什麼。

elasticsearch支援不同型別搜尋的query,例如match query,term query, bool query,phrase query,不知道樓主用的是哪一種。我猜應該用的是match query,ik將"寶馬2012"分成了"寶馬"和"2012",所以只要匹配到了"寶馬"或者"2012"的文件都會被返回,只是同時包含二者的文件的相關性要高一些。如果樓主要同時包含二者,可以指定match query的operator為and,也可以用bool query或者phrase query。

這些其實在es的官方文件裡面都有提到:Match Query。

3樓:大周

1.首先要保證你的IK分詞器能切分「寶馬2012」為「寶馬」,「2012」

2.matchQuery中用and語法即可QueryBuilders.matchQuery(key, "

寶馬2012

").operator(Operator.AND)

elasticsearch 集群設計

皮皮 三颱機器 IPHOSTANME OS是否是主節點 172.16.241.2 linux1 centos8 是 初始 172.16.241.3 linux2 centos8 是172.16.241.4 linux3 centos8 是Es不允許使用root啟動,故而建立使用者和組 三颱機器 gr...

Elasticsearch到底能玩多大的資料量?

熊哥club 我們目前3個集群,主集群30臺伺服器,配置512G記憶體40C,25T 30T,80T的磁碟容量都有,98個節點,單index最大7T,shard數接近1萬 日均30億條日誌記錄,6T資料,總容量已經達到pb級別。目前搜查都是毫秒級,由於是新手,踩過很多坑也填了很多坑,目前還在摸索優化...

在ElasticSearch中,集群 Cluster ,節點 Node ,分片 Shard ,Indices 索引 ,replicas 備份 之間是什麼關係?

最近正在研究 Elasticsearch 下稱 ES 試著回答下你的問題 幾個關鍵的概念 Node 乙個執行著的 ES 例項即為 Node Cluster 多個 Node 組成 Cluster。其中會有乙個 Node 充當 Master 角色,用來進行集群管理類的工作 Index ES 的資料從邏輯...