首先得到匹配条件的结果

时间:2016-01-18 19:36:28

标签: database elasticsearch

给出一个非常简单的文件:

`concert_name` - String containing the name of the concert 
`city` - City ID of the concert
`band` - Band ID
`relevance` - An integer that indicate how important the concert is

我希望在特定城市举办所有音乐会,但我希望首先针对特定乐队(按相关性排序)以及所有其他按相关性排序

所以我可以查询:

  

Milan中为我提供所有音乐会,并先返回Pearl Jam

的音乐会

我如何在Elastica 1.X中执行此操作?

1 个答案:

答案 0 :(得分:0)

编辑1

我认为可以在多个字段上使用sorting并使用script来完成此操作。你必须enable dynamic scripting。我将10的值赋给你想要匹配的乐队,其他人得到0的值。试试这样的事情

{
  "query": {
    "match": {
      "city": "milan"
    }
  },
  "sort": [
    {
      "_script": {
        "script": "if(doc['band'].value == 'pearl') {10} else {0}",
        "type": "number",
        "order": "desc"
      }
    },
    {
      "relevance": {
        "order": "desc"
      }
    }
  ]
}

我假设更高的数字意味着更重要的音乐会。我已在ES 1.7

上对此进行了测试

这有帮助吗?