弹性搜索:基于自定义逻辑排序

时间:2015-09-25 11:23:29

标签: lucene elasticsearch

我正在给出一种模式" Master Servant"弹性服务器搜索API。 它返回至少包含其中一个文档的文档(Master OR Servant)。

按结果降序显示结果。 但是,我想将该排序更改为我的自定义逻辑,即如果文档包含单词,即Master和Servant,则首先显示该文档。

这可以实现吗?

1 个答案:

答案 0 :(得分:0)

使用bool查询。

来自'ES definitive Guide'

  

bool查询采用更多匹配更好的方法,因此每个匹配子句的得分将被加在一起,为每个文档提供最终的_score。与两个条款匹配的文档的得分高于仅匹配一个条款的文档。

编辑根据评论:

澄清我相信你想要这样的东西:

{
  "query": {
    "bool": {
      "should": [
        { "match": { "field": "Master" }},
        { "match": { "field": "Servant"   }}
      ]
    }
  }
}