Подтвердить что ты не робот

Где я помещаю файлы сопоставления для Elasticsearch?

Я смущен документами ES, на самом деле здесь они заявляют, что индексы должны идти в каталоге сопоставления (и indexname sub dirs)

Отображения могут быть определены в файлах, называемых [mapping_name].json и be помещается либо в папку config/mapping/_default, либо под config/mappings/[index_name] (для сопоставлений, которые должны быть связаны только с определенным индексом).

Но затем здесь в разделе "config", в нем говорится:

Шаблоны индексов также могут быть помещены в конфигурационное местоположение (path.conf) в каталоге шаблонов (обратите внимание, не забудьте разместить их на всех основных допустимых узлах). Например, файл, называемый template_1.json можно поместить в config/templates, и это будет добавляется, если он соответствует индексу.

Я помещаю свое сопоставление в /config/mappings/myindexname/mappinfile.json, и это похоже на:

{
    "template": "maincontentindex",
    "settings": {
        "index": {
            "analysis": {
                "analyzer": {
                    "htmlStrippingAnalyzer": {
                        "tokenizer": "standard",
                        "filter": ["standard", "lowercase"],
                        "char_filter": "html_strip"
                    }
                }
            }
        }
    },

    "mappings": {
        "rendition": {
            "_timestamp": {
                "enabled": true,
                "store" : true
            },
            "properties": {
                "key": {
                    "type": "string",
                    "store": "yes",
                    "analyzer": "keyword"
                },
                "parentPage": {
                    "type": "string",
                    "store": "yes",
                    "analyzer": "keyword"
                },
                "type": {
                    "type": "string",
                    "store": "yes",
                    "analyzer": "keyword"
                },
                "language": {
                    "type": "string",
                    "store": "yes",
                    "analyzer": "keyword"
                },
                "device": {
                    "type": "string",
                    "store": "yes",
                    "analyzer": "keyword"
                },
                "territory": {
                    "type": "string",
                    "store": "yes",
                    "analyzer": "keyword"
                },
                "channel": {
                    "type": "string",
                    "store": "yes",
                    "analyzer": "keyword"
                },
                "template": {
                    "type": "string",
                    "store": "yes",
                    "analyzer": "keyword"
                },
                "meta": {
                    "properties": {
                        "content": {
                            "type": "string",
                            "store": "yes"
                        }
                    }
                }       
            }
        }
    }
}

если я использую REST Api, чтобы поместить его на сервер, он работает нормально, и если я вызываю /maincontentindex/rendition/ _mapping, я просто получаю указанную выше структуру (даже без данных).

Но с каталогом я просто получаю 404, и если я вставляю что-то это просто обычное динамическое отображение.

4b9b3361

Ответ 1

Существует различие между сопоставлениями и шаблонами.

Сопоставления содержат ваши поля и как вы хотите индексировать/хранить их в elasticsearch. Они ссылаются на определенный индекс и тип (или несколько типов в одном и том же индексе при использовании специального типа _default_). Вы можете отправлять сопоставления либо при создании индекса через create index api, либо через поместите сопоставление api, чтобы изменить сопоставления для существующего индекса.

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

Если у вас есть шаблон индекса, вы можете поместить его под templates, как указано в ссылке. Если у вас есть сопоставление для типа, вам нужно поместить его в каталог mappings.

json, который вы вставили в вопрос, является шаблоном индекса, который должен находиться в папке templates, а не под mappings. То, что вы вернетесь, используя api-преобразование get, как описано, не является самим шаблоном, как вы сказали, но текущим сопоставлением для индекса/типа, указанного вами в URL-адресе (только часть отображений вашего шаблона).

Кроме того, я предлагаю вам использовать REST api, который предоставляет elasticsearch. Использование файлов в файловой системе действительно не похоже на способ elasticsearch делать вещи.