Где я помещаю файлы сопоставления для 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, и если я вставляю что-то это просто обычное динамическое отображение.
Ответы
Ответ 1
Существует различие между сопоставлениями и шаблонами.
Сопоставления содержат ваши поля и как вы хотите индексировать/хранить их в elasticsearch. Они ссылаются на определенный индекс и тип (или несколько типов в одном и том же индексе при использовании специального типа _default_
). Вы можете отправлять сопоставления либо при создании индекса через create index api, либо через поместите сопоставление api, чтобы изменить сопоставления для существующего индекса.
Шаблоны индексов - это способ автоматического применения сопоставлений и индексов к индексам, которые будут созданы в будущем, имена которых соответствуют указанный шаблон. Пусть говорят, что отображения являются частью шаблона индекса. Шаблон индекса может содержать сопоставления для нескольких типов и параметров индекса.
Если у вас есть шаблон индекса, вы можете поместить его под templates
, как указано в ссылке. Если у вас есть сопоставление для типа, вам нужно поместить его в каталог mappings
.
json, который вы вставили в вопрос, является шаблоном индекса, который должен находиться в папке templates
, а не под mappings
. То, что вы вернетесь, используя api-преобразование get, как описано, не является самим шаблоном, как вы сказали, но текущим сопоставлением для индекса/типа, указанного вами в URL-адресе (только часть отображений вашего шаблона).
Кроме того, я предлагаю вам использовать REST api, который предоставляет elasticsearch. Использование файлов в файловой системе действительно не похоже на способ elasticsearch делать вещи.