繁体   English   中英

Elasticsearch查询按字段以特定顺序排序

[英]Elasticsearch Query sorted by field in specific order

我使用Elasticsearch 2.2

我有一些这样的索引文件:

{     
  "id": 2116,
  "brand": "The Brand 1",
  "reference": "OI444",
  "supplier": "My supplier 1"
},
{     
  "id": 2118,
  "brand": "The Brand",
  "reference": "OI44488",
  "supplier": "My supplier"
}

我如何请求索引来获取按ID列表排序的查询,此查询有效,但以其他顺序返回结果。

{
  "query": {
    "bool": {
      "filter": {
        "ids": {
          "values": [
            2118, 2116
          ]
        }
      }
    }
  }
}

就我而言,我的ID列表可以是随机的,例如216,105,208,我需要在结果集中遵守此顺序

  • 映射中不应分析您使用的字段
  • 添加排序

询问

POST c1_2/Test/_search/
{
  "sort": [
    {
      "_script": {
        "script": "doc['id'] != null ? sortOrder.indexOf(doc['id'].value.toInteger()) : 0",
        "type": "number",
        "params": {
          "sortOrder": [
            2116,
            211
          ]
        },
        "order": "desc"
      }
    },
    "_score"
  ],
  "query": {
    "bool": {
      "should": [
        {
          "terms": {
            "brand": [
              "The"
            ]
          }
        },
        {
          "ids": {
            "values": [
              2118,
              2116,
              211
            ]
          }
        }
      ]
    }
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM