elasticsearch - 如何在elasticsearch中搜索数组中的第一个元素?

标签 elasticsearch amazon-elastic-beanstalk elastic-stack elasticsearch-5

我只想在数组中的第一个元素上搜索对象,而忽略其余元素。
例如,对于下面的数据,如果我只想在model中搜索vehicle数组中的第一个元素。

{
  "drivers" : [
    {
        "last_name" : "McQueen",
        "vehicle" : [
            {
                "make" : "Powell Motors",
                "model" : "Canyonero"
            },
            {
                "make" : "Miller-Meteor",
                "model" : "Ecto-1"
            }
        ]
    },
    {
        "last_name" : "Buzz",
        "vehicle" : [
            {
                "make" : "Powell Motors",
                "model" : "Canyonero"
            },
            {
                "make" : "Miller-Meteor",
                "model" : "Ecto-1"
            }
        ]
    }
}
我知道我可以像这样进行嵌套查询,但是这里的问题是要搜索所有车辆。我只希望搜索车辆列表中的第0个元素,而忽略其余元素。
{
  "query": {
    "nested": {
      "path": "driver",
      "query": {
        "nested": {
          "path": "driver.vehicle",
          "query": {
            "bool": {
              "must": [
                { "match": { "drivers.vehicle.model": "Canyonero" } }
              ]
            }
          }
        }
      }
    }
  }
}
理想情况下,我希望每次使用{ drivers.vehicle[0].model": "Canyonero" }之类的东西来搜索列表中的第一辆车。有什么办法可以有效地做到这一点?

最佳答案

看看这个answer -当然可以,但是很麻烦。
我反而建议使用

  • ingest pipelines,第一辆车将被提取到新的根级字段或
  • updating by query与上面相同,但是可以随意执行,而不是仅在摄取时执行。
  • 关于elasticsearch - 如何在elasticsearch中搜索数组中的第一个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63305778/

    相关文章:

    nginx - 静态文件显示为未压缩,即使 Web 服务器已配置为 gzip 压缩

    elasticsearch - 用于 php monolog 多行(stacktrace)日志的 Logstash grok 过滤器配置

    elasticsearch - 如何安排Kibana索引过渡?

    elasticsearch - 跟踪 Elasticsearch 何时完成索引

    elasticsearch - 在Elasticsearch中检索记录ID

    elasticsearch - 弹性堆栈Twitter示例推文

    amazon-web-services - AWS Beanstalk - 如果没有来自 CLI 的负载均衡器,则无法在 VPC 中创建环境

    elasticsearch - grok模式从日志消息中提取数据

    java - 有没有办法确定 Elastic Beanstalk 上 Tomcat 环境的 URL 是什么?

    java - 如何从 ES 1.7 读取海量数据并索引到 ES 6.7