Elasticsearch - 在另一个字段上恢复具有最大值的记录的id

时间:2016-07-29 16:45:20

标签: elasticsearch

在Elasticsearch中,我有以下记录:

{"_id": "....", "field1": "201501", "tag": "a", "name": "...."},
{"_id": "....", "field1": "201503", "tag": "a", "name": "...."},
{"_id": "....", "field1": "201504", "tag": "a", "name": "...."},     
{"_id": "....", "field1": "201501", "tag": "b", "name": "...."},
{"_id": "....", "field1": "201503", "tag": "b", "name": "...."},
{"_id": "....", "field1": "201504", "tag": "b", "name": "...."},     
...

我希望以高效的方式对Elasticsearch进行查询以恢复_id(elasticsearch one),其中field1具有最大值且字段tag为过滤一个值(即b)。我可以认为没有重复。

简单的方法是使用tag上的过滤器恢复他并按field1 desc排序。

修改

我使用以下查询:

 {
    "size": 1,
    "query": {
      "term": {
         "field": "tag",
         "value", "b"
      }
    },
    "sort": {
         "field1": "desc"
    }
 }   

问题是:太慢了,因为我必须执行此操作来进行一些编程检查,更新此找到的记录,然后插入一个新记录。

还有更快的方法吗? 即确实有一种方法可以在这个" max"上使用updateByQuery。记录?

0 个答案:

没有答案