起因:
使用了一次term查詢想進行完全匹配,失敗了。
經過:
經過多方調查(雖然也沒有很多)發現原因如下:
我想要進行查詢的字段在創建mapping時使用的“text”數據類型進行創建。
眾所周知text類型的數據在elasticsearch中會進行分詞並建立倒排索引,因此它會對每個詞進行索引,而不會建立整個句子的索引。
term搜索時會對整個句子作為關鍵詞進行搜索,由於沒有建立整個句子的關鍵詞索引,因此無法查找到東西。
結果:
解決方法:
有人說沒有方法,只能重新建mapping,建mapping的時候改成別的類型。
我將term搜索改為match_phrase搜索,match_phrase搜索相當於sql語句里面的“like”。這種查詢長文本的時候會很慢,不過可以用來搜索標題之類的查詢
由於我的數據樣本每個標題和每個標題都不同,標題之間也沒有明顯的包含關系,因此之間拿來當term用了。
不具有普遍性,換其它數據可能不適用,但是總之我可以先湊合。
沒啦