查询multi_match短语结果排在第一位,单个词搜索排在第二位

时间:2019-01-08 10:21:59

标签: elasticsearch

我要搜索三个字段:title^3 增强3 desc^2 增强2 body ,假设我正在搜索字符串refuse eating,我希望在提到的任何字段中同时包含两个单词(或更多单词)的文章首先显示,然后显示包含任何单词的文章其次

我尝试使用must的{​​{1}},但是第一个结果仅包含一个单词,另一个单词不在任何字段中。

这是我尝试过的代码:

multi_match

我正在寻找的东西是这样的:

  • article1 :在GET my_index/_search { "query": { "bool": { "must_not": [ {"exists": {"field": "deleted"}} ], "must": [ { "multi_match": { "query": "refuse eating", "fields": [ "title^3", "desc^2", "body" ], "type": "best_fields" } } ], "filter": [ {"term": {"kind": "article"}}, {"term": {"status": "published"}} ] } } } (或refuse eating)中有字符串title,应该先出现。

  • 第2条:在body中有refuse一词,在desc中有eating一词,排在第二。 / p>

  • 第3条:查询字符串bodyrefuse中只有一个单词,应该排在最后。

我希望结果按此顺序排列:

  1. article1
  2. article2
  3. article3

谢谢。

0 个答案:

没有答案