我正在通过类似以下内容的方式显式创建映射:
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"]
}
当我使用“ stored_fields”:“ *”进行搜索时,会看到以下字段:
{
"_index": "field1",
"_type": "def",
"_id": "AW4n1Ro-7hYlm0zsHjiV",
"_score": 1,
"_source": {
"field1": [
"blah"
],
"inner.field1": [
"blah3"
]
},
"fields": {
"field1": [
"blah",
"blah3"
]
}
}
因此,看来我的“ field1”映射与“ field1”和“ inner.field1”都匹配,这与我期望的不一样。我一直很难找到有关匹配如何/应该如何工作的文档,以便我可以正确创建映射。
对任何解释和对文档的引用表示赞赏。
更新: 仅当字段是数组时,才会发生上述现象。我已经更新了以下内容以显示它。
有趣的是,两个值都必须是数组才能在存储字段中并置。
另外,这是elasticsearch 5.6(由于插件而被我困住了。)