Получить «Объекты в массивах не очень хорошо поддерживаются» с новой схемой в Kibana Kibana - PullRequest
0 голосов
/ 07 ноября 2019

У меня в системе несколько журналов. Я хочу собрать этот журнал и проиндексировать его в Elasticsearch. моя окончательная схема ниже.

{
    "id": 1,
    "name": 2,
    "history": [
        {
            "login": {
                "time": "123",
                "text": "aaa"
            },
            "logout": {
                "time": "124",
                "text": "bbb"
            }
        },
        {
            "login": {
                "time": "125",
                "text": "ccc"
            },
            "logout": {
                "time": "126",
                "text": "ddd"
            }
        }
    ]
}

Когда я индексирую эту схему для поиска Elsaticsearch, я получаю предупреждение ниже в Kibana (вкладка «Обнаружение»).

Объекты в массивах не поддерживаются

enter image description here но я могу фильтровать по всем полям!

  • почему это предупреждение отображается?
  • Elasticsearch не поддерживается объектом в массиве?
  • Что мне делать?
  • - это еще один способ индексировать этот тип схемы?

обсуждение. Ссылка на эл. Карту

1 Ответ

0 голосов
/ 07 ноября 2019

Вы должны использовать вложенный тип вместо объекта

Массивы объектов не работают так, как вы ожидаете: вы не можете запрашивать каждый объект независимо от других объектов вмассив. Если вам нужно это сделать, вы должны использовать вложенный тип данных вместо типа данных объекта.

Подробнее о

Вы можете создать динамическийотображение

PUT my_index
{
  "mappings": {
    "doc": {
      "dynamic_templates": [
        {
          "objects": {
            "match_mapping_type": "object",
            "mapping": {
              "type": "nested"
            }
          }
        }
      ],
      "properties": {
        "id": {
          "type": "keyword"
        },
        "name": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        }
      }
    }
  }
}

Или вы можете создать свою собственную схему

PUT my_index
{
  "mappings": {
    "doc": {
      "properties": {
        "history": {
          "type": "nested",
          "properties": {
            "login": {
              "type": "nested",
              "properties": {
                "text": {
                  "type": "text",
                  "fields": {
                    "keyword": {
                      "type": "keyword",
                      "ignore_above": 256
                    }
                  }
                },
                "time": {
                  "type": "text",
                  "fields": {
                    "keyword": {
                      "type": "keyword",
                      "ignore_above": 256
                    }
                  }
                }
              }
            },
            "logout": {
              "type": "nested",
              "properties": {
                "text": {
                  "type": "text",
                  "fields": {
                    "keyword": {
                      "type": "keyword",
                      "ignore_above": 256
                    }
                  }
                },
                "time": {
                  "type": "text",
                  "fields": {
                    "keyword": {
                      "type": "keyword",
                      "ignore_above": 256
                    }
                  }
                }
              }
            }
          }
        },
        "id": {
          "type": "keyword"
        },
        "name": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        }
      }
    }
  }
}
...