elasticsearch - 在Elasticsearch中按列表排序

标签 elasticsearch

我有一个查询,我在其中询问elasticsearch基于ID列表的记录列表。例如

匹配:id:[1,2,3]

是否可以告诉elasticsearch按此顺序将元素退还给我?我的ID列表将是数百个,并且我将每25个元素分页一次。

如果可以的话我会很高兴

{match:编号[1,2,3]
排序:id [3,1,2}

任何建议将非常有帮助。谢谢!

最佳答案

如果可能,请使用Multi Get:

POST /orderbyids/_mget
{
    "ids" : [12, 80, 44, 50]
}

一种替代方法是使用动态脚本:
POST /orderbyids/_search
{
  "query": {
    "function_score": {
      "query": {
        "ids": {
          "values": [
            50,
            80,
            44,
            12
          ]
        }
      },
      "script_score": {
        "params": {
          "ids": [
              12,
              80,
              44,
              50
          ]
        },
        "script": "return -ids.indexOf(doc['id'].value.intValue());"
      }
    }
  }
}

该功能已在封闭的issue中进行了讨论。

关于elasticsearch - 在Elasticsearch中按列表排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39536422/

相关文章:

elasticsearch - 带有 nutch REST api 的 Nutch 弹性索引器中的未知问题

elasticsearch - 日期范围查询不适用于Elastic 2.4群集

elasticsearch - Logstash Grok过滤器模式

elasticsearch - ES查询以匹配数组中的所有元素

elasticsearch - Elasticsearch “keep_types”过滤器不适用于 “pattern” token 生成器

elasticsearch - Elasticsearch排序字段

java - 在 Elasticsearch 中加载自定义同义词文件时出错

amazon-web-services - 仅两个可用区的AWS区域中的Elasticsearch集群配置

elasticsearch - 如何使用类似于SQL “Like”运算符的ElasticSearch编写查询?

spring - Spring Data ElasticSearch NullPointerException