Elastic - 嵌套在Array中的JSON数组

时间:2018-05-31 11:58:38

标签: arrays json elasticsearch

我必须将json索引到Elastic,它看起来像下面的格式。我的问题是密钥"变量"是包含json对象的数组(我想过"嵌套" Elastic的数据类型)但是其中一些对象可能包含嵌套的json数组。 (见变量CUSTOMERS)。

POST /example_data/data {

"process_name": "TEST_PROCESS",
"process_version ": 0,
"process_id": "1111",
"activity_id": "111",
"name": "update_data",
"username": "testUser",
"datetime": "2018-01-01 10:00:00",
"variables": [{
        "name": "ΒΑΝΚ",
        "data_type": "STRING",
        "value": "EUROBANK"
    },{
        "name": "CITY",
        "data_type": "STRING",
        "value": "LONDON"
    }, {
        "name": "CUSTOMERS",
        "data_type": "ENTITY",
        "value": [{
                "variables": [{
                        "name": "CUSTOMER_NAME",
                        "data_type": "STRING",
                        "value": "JOHN"
                    }, {
                        "name": " CUSTOMER_CITY",
                        "data_type": "STRING",
                        "value": "LONDON"
                    }
                ]
            }
        ]
    }, {
        "name": "CUSTOMERS",
        "data_type": "ENTITY",
        "value": [{
                "variables": [{
                        "name": "CUSTOMER_NAME",
                        "data_type": "STRING",
                        "value": "ΑΘΗΝΑ"
                    }, {
                        "name": " CUSTOMER_CITY ",
                        "data_type": "STRING",
                        "value": "LIVERPOOL"
                    }, {
                        "name": " CUSTOMER_NUMBER",
                        "data_type": "STRING",
                        "value": "1234567890"
                    }

                ]
            }
        ]
    }
] }

当我试图将其编入索引时,我收到以下错误

{ "error": {
"root_cause": [
  {
    "type": "illegal_argument_exception",
    "reason": "Can't merge a non object mapping [variables.value] with an object mapping [variables.value]"
  }
],
"type": "illegal_argument_exception",
"reason": "Can't merge a non object mapping [variables.value] with an object mapping [variables.value]" }, "status": 400 }

映射

{ "example_data": {
"mappings": {
  "data": {
    "properties": {
      "activity_id": {
        "type": "text"
      },
      "name": {
        "type": "text"
      },
      "process_name": {
        "type": "text"
      },
      "process_version": {
        "type": "integer"
      }
      "process_id": {
        "type": "text"
      },
      "datetime": {
        "type": "date",
        "format": "yyyy-MM-dd HH:mm:ss"
      },
      "username": {
        "type": "text",
        "analyzer": "greek"
      },
      "variables": {
        "type": "nested",
        "properties": {
          "data_type": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          },
          "name": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          },
          "value": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          }
        }
      }
    }
  }
}}}

当我删除包含数组的变量CUSTOMERS时,它正常工作,因为只有json对象。

有办法解决这个问题吗?提前致谢

0 个答案:

没有答案