match_mapping_type, цель только массивы объектов - PullRequest
0 голосов
/ 29 ноября 2018

Я пытаюсь создать сопоставление по умолчанию для моих индексов.

Я хочу, чтобы мой массив объектов автоматически определялся как nested поля.Мне нужен только массив объектов, отображаемых как таковые, а не обычные объекты:

{
  "foo": "bar",
  // someArray should be mapped as a nested type field
  "someArray": [
    {
      "bla": "Blou"
    }
  ],
  // someObject should be mapped as a normal object
  "someObject": {
    "btch": "lasagna"
  }
}

Чтобы попробовать что-то, вот что я отправил в свой кластер:

PUT _template/automatic_nested_object
{
  "order": 0,
  "template": "*", 
  "mappings": {
    "_default_": { 
      "dynamic_templates": [
        {
          "nested": {
            "match_mapping_type": "object",
            "mapping": {
              "type": "nested"
            }
          }
        }
      ]
    }
  }
}

Проблемаis "match_mapping_type": "object", соответствует всем объектам, а не только массивам, и я не могу найти в документации ничего, что позволило бы мне что-то изменить.

Кто-нибудь знает, как сделать такую ​​разницу?

1 Ответ

0 голосов
/ 29 ноября 2018

Я бы предложил добавить подсказку в имя поля, чтобы вы знали, какие поля вы хотите динамически отобразить как вложенные:

PUT _template/automatic_nested_object
{
  "order": 0,
  "template": "*", 
  "mappings": {
    "doc": {                      <--- note: _default_ deprecated in ES6
      "dynamic_templates": [
        {
          "nested": {
            "match": "*Array",    <--- name clue for nested array
            "mapping": {
              "type": "nested"
            }
          }
        }
      ]
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...