【问题标题】:Elasticsearch: How insert nested Json array object into Elasticsearch IndexElasticsearch:如何将嵌套的 Json 数组对象插入 Elasticsearch 索引
【发布时间】:2016-07-20 20:30:33
【问题描述】:

如何将以下 JSON 嵌套数组 abject 插入名为 "index_19_7_16" 的 Elasticsearch 索引中?

{
      "hour": [
        {
          "time": "00:00",
          "master_id": [
            {
              "m.id": 111,
              "m.value": 222
            },
            {
              "m.id": 113,
              "m.value": 444
            }
          ],
          "child_id": [
            {
              "c.id": 77,
              "c.value": 222
            },
            {
              "c.id": 7751,
              "c.value": 444
            }
          ]
        },
        {
          "time": "01:00",
          "master_id": [
            {
              "m.id": 111,
              "m.value": 222
            },
            {
              "m.id": 113,
              "m.value": 444
            }
          ],
          "child_id": [
            {
              "c.id": 77,
              "c.value": 222
            },
            {
              "c.id": 7751,
              "c.value": 444
            }
          ]
        }
      ]
    }

我需要先创建映射还是直接将 JSON 动态插入到弹性索引中。

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    您需要预先创建映射,并特别提到某些字段必须是 "type":"nested" 否则 ES 只会创建对象。这里特指nested type of fields in ES

    如果 nested 您的意思只是文档的嵌套性质,那么您无需执行任何操作。

    【讨论】:

    • Andrei Stefan:谢谢,对于搜索/聚合问题有什么更好的方法,要么创建“type”:“nested”,要么只插入没有任何映射的 Json?
    • nested 的故事是关于将一​​个字段值与来自同一 nested 字段的另一个字段值相关联。在您的情况下,如果您未来的查询关心 "m.id": 111 被视为与 "m.value": 222 “连接”,那么您需要 nested
    • 我未来的聚合将是所有“m.id”的总和:111,小时范围之间的值。例如:SUM+= 00:00-02:00 之间的所有值来自“m.id ":111
    • 请阅读我在答案中提供的文档链接。那里的例子是相关的:名字和姓氏。显然,每个人都有其中之一。对于嵌套字段,某个名字属于某个姓氏。对于非嵌套字段,该关联会丢失。这与嵌套字段有关。
    猜你喜欢
    • 2011-12-30
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 2016-08-09
    • 2011-12-29
    • 1970-01-01
    • 2021-02-03
    • 1970-01-01
    相关资源
    最近更新 更多