小编Vio*_*ioh的帖子

Elasticsearch:如何返回某个字段中具有最高值的所有文档?

我是 Elasticsearch 的新手,目前在解决一个相当基本的问题时遇到了一些困难。假设我有以下映射:

PUT /myindex/_mappings/people 
{
    "properties": {
        "name": {"type": "keyword"},
        "age" : {"type": "integer"},
    }
}
Run Code Online (Sandbox Code Playgroud)

并附有以下文件:

{"name": "Bob", "age": 20},
{"name": "Ben", "age": 25},
{"name": "Eli", "age": 30},
{"name": "Eva", "age": 20},
{"name": "Jan", "age": 21},
{"name": "Jim", "age": 20},
{"name": "Lea", "age": 30},
Run Code Online (Sandbox Code Playgroud)

如何创建一个查询来返回索引中最年长的所有人员?换句话说,我期待 Eli 和 Lea 回来,因为他们都 30 岁了,比其他人都年长。

我正在将 Elasticsearch API 6.0.0 用于 javascript(我的应用程序是用 nodejs 编写的)。现在,我的解决方法是向数据库执行 2 个请求。第一个是聚合最大年龄(应返回 30),然后使用此最大年龄执行另一个请求:

GET /myindex/people/_search
{
    "aggs": {
        "max_age": {"max": {"field": "age"}}
    }
}

GET /myindex/people/_search
{
    "query": {"term": …
Run Code Online (Sandbox Code Playgroud)

elasticsearch

3
推荐指数
1
解决办法
2398
查看次数

标签 统计

elasticsearch ×1