Elastic - JSON Array, вложенный в Array - PullRequest
0 голосов
/ 31 мая 2018

Я должен индексировать 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 }

Mapping

{ "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.

Есть ли способ справиться с этим?Заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...