Elasticsearch Dynami c Шаблон Mapping - PullRequest
1 голос
/ 05 марта 2020

Я использую Elasticsearch версии 7.1 и пытаюсь использовать Dynami c Отображение шаблона, но не могу заставить его работать. Индекс принимает мое отображение и данные успешно загружаются, но данные не индексируются в соответствии с предоставленным мною отображением, что заставляет меня подозревать, что в моем отображении есть ошибка.

Вот упрощенная версия документ, который я пытаюсь проиндексировать:

{
    "id": "foo",
    "breadcrumb": {
        "en-US": [
            {
                "name": "one",
                "url": "/path/1"
            },
            {
                "name": "two",
                "url": "/path/2"
            }
        ],
        "es-ES": [
            {
                "name": "uno",
                "url": "/path/1"
            },
            {
                "name": "dos",
                "url": "/path/2"
            }
        ]
    }
}

И вот упрощенная версия сопоставления:

{
    "dynamic": "false",
    "properties": {
        "id": {"type": "keyword"}
    },
    "dynamic_templates": [
        {
            "breadcrumb_template": {
                "path_match": "breadcrumb.*",
                "match_mapping_type": "object",
                "mapping": {
                    "type": "nested",
                    "properties": {
                        "url": {"type": "keyword"},
                        "name": {"type": "keyword"}
                    }
                }
            }
        }
    ]
}

Я знаю, что мог бы отобразить это явно, но я бы повторил ту же структуру для каждого ключа в разделе "хлебные крошки", и я бы предпочел избежать этого.

1 Ответ

1 голос
/ 06 марта 2020

dynamic: false это не работает с dynamic_templates. Поля сохраняются и отображаются в _source, но не доступны для поиска. Если вы добавите breadcrumb поле с dynamic: true в свойствах, все должно быть в порядке.

"properties": {
    "id": {"type": "keyword"},
    "breadcrumb": {"type": "object", "dynamic": true}
}
...