Я явно создаю сопоставление с помощью чего-то вроде следующего:
PUT field1
{
"mappings": {
"def": {
"dynamic": false,
"_all": {
"enabled": true
},
"_source": {
"enabled": true
},
"date_detection": false,
"numeric_detection": false,
"properties": {
"field1": {
"type": "keyword",
"store": true,
"ignore_above": 8191
}
}
}
}
}
Я помещаю объект, подобный следующему:
POST field1/def
{ "field1":["blah"],
"inner.field1":["blah3"]
}
Когда я выполняю поиск с помощью элемента «Storage_fields»":" * "Я вижу следующее поле:
{
"_index": "field1",
"_type": "def",
"_id": "AW4n1Ro-7hYlm0zsHjiV",
"_score": 1,
"_source": {
"field1": [
"blah"
],
"inner.field1": [
"blah3"
]
},
"fields": {
"field1": [
"blah",
"blah3"
]
}
}
Итак, похоже, что мое сопоставление" field1 "совпадает с обоими" field1 "И" inner.field1 ", что не то, что я ожидал. Мне было очень трудно найти документацию о том, как сопоставление работает / должно работать, чтобы я мог правильно создать свое сопоставление.
Любое объяснение и ссылка на документацию приветствуются.
ОБНОВЛЕНИЕ: вышеупомянутое поведение происходит, только если поля являются массивами. Я обновил ниже, чтобы показать это.
Интересно, что ОБА значения должны быть массивами, чтобы их можно было объединить в сохраненном поле.
ТАКЖЕ, этоasticsearch 5.6 (который я застрялиз-за плагина).