在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
。记录?