按索引查询elasticsearch嵌套字段(插入顺序)

Query elasticsearch nested field by index(order of insert)

我有一个包含一些嵌套对象(映射为嵌套字段)的 elasticsearch 文档 例如:

{
  "FirstName": "Test",
  "LastName": "Test",
  "Cost": 322.54,
  "Email": "test@test.com",
  "Vehicles": [
    {
      "Year": 2000,
      "Make": "Mazda",
      "Model": "6"
    },
    {
      "Year": 2012,
      "Make": "Ford",
      "Model": "F150"
    }
  ]
}

我正在尝试对数组的特定索引进行聚合,例如,我想对福特制造但 第一辆车的文件的成本求和。

有可能吗?互联网上几乎没有关于 elasticsearch 嵌套字段的信息,也没有关于它们的 index/order

可以实现你想要的,但你还需要在你的嵌套文档中添加索引顺序作为一个字段:

{
  "FirstName": "Test",
  "LastName": "Test",
  "Cost": 322.54,
  "Email": "test@test.com",
  "Vehicles": [
    {
      "Year": 2000,
      "Make": "Mazda",
      "Model": "6",
      "Index": 0
    },
    {
      "Year": 2012,
      "Make": "Ford",
      "Model": "F150",
      "Index": 1
    }
  ]
}

然后您可以使用 IndexMake 上的两个条件查询您的索引,如下所示:

{
  "query": {
    "nested": {
      "path": "Vehicles",
      "query": {
        "bool": {
          "filter": [
            {
              "match": {
                "Vehicles.Index": 0
              }
            },
            {
              "match": {
                "Vehicles.Make": "Ford"
              }
            }
          ]
        }
      }
    }
  }
}

在这种特定情况下,查询不会像您预期的那样产生任何结果。