查找每个属性值的第一个doc

时间:2016-06-06 19:34:32

标签: elasticsearch

我试图获取具有特定属性的第一个文档。 例如,我有50个带有属性的文档" a":" 1",具有不同的日期。 还有100个文档" a":" 2" 有没有办法查询每个" a"的第一个文档?按日期计算价值?

1 个答案:

答案 0 :(得分:0)

不完全符合您的要求,但您可以运行以下内容,它会显示与:1或a:2匹配的结果,并会根据需要对结果进行排序。

{
  "sort": {
    "your_timestamp_field": {
      "order": "desc"
    }
  },
  "query": {
    "filtered": {
      "filter": {
        "or": [
          {
            "term": {
              "a": 1
            }
          },
          {
            "term": {
              "a": 2
            }
          }
        ]
      }
    }
  }
}

您还可以使用msearch运行多个查询。例如

将以下内容放在名为requests

的文件中
{"index": "your-index"}
{"size":1,"sort":{"@timestamp":{"order":"desc"}},"query":{"filtered":{"filter":{"term":{"a":"1"}}}}}
{"index": "your-index"}
{"size":1,"sort":{"@timestamp":{"order":"desc"}},"query":{"filtered":{"filter":{"term":{"a":"2"}}}}}

然后运行

curl -XGET http://localhost:9200/your-index/_msearch --data-binary @requests; echo