Elasticsearch查詢問題:text類型term查詢不到


起因:

  使用了一次term查詢想進行完全匹配,失敗了。

經過:

  經過多方調查(雖然也沒有很多)發現原因如下:

    我想要進行查詢的字段在創建mapping時使用的“text”數據類型進行創建。

    眾所周知text類型的數據在elasticsearch中會進行分詞並建立倒排索引,因此它會對每個詞進行索引,而不會建立整個句子的索引。

    term搜索時會對整個句子作為關鍵詞進行搜索,由於沒有建立整個句子的關鍵詞索引,因此無法查找到東西。

結果:

  解決方法:

    有人說沒有方法,只能重新建mapping,建mapping的時候改成別的類型。

    我將term搜索改為match_phrase搜索,match_phrase搜索相當於sql語句里面的“like”。這種查詢長文本的時候會很慢,不過可以用來搜索標題之類的查詢

    由於我的數據樣本每個標題和每個標題都不同,標題之間也沒有明顯的包含關系,因此之間拿來當term用了。

    不具有普遍性,換其它數據可能不適用,但是總之我可以先湊合。

 

沒啦

 


免責聲明!

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



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