【发布时间】:2016-08-25 17:54:23
【问题描述】:
我在 ElasticSearch 中使用动态映射。
我使用它是因为我的索引很长,并且我需要使用模板功能以避免在多个地方更新定义 (see my other SO question)。
我正在发送以下 json (Object Zoo),其中 包含一个 HashMap 作为示例:
Put 127.0.0.1:9200/myIndex/Zoo/10
{
"id" : 1,
"Name" : "Madagascar",
"map" : {
"1" : {
"id" : -4944060986111146989,
"name" : null
},
"2" : {
"id" : 5073063561743125202,
"name" : null
},
"3" : {
"id" : -1777985506870671559,
"name" : null
}
}
}
这将创建以下索引
{
"mm3_v2": {
"mappings": {
"Zoo": {
"properties": {
"Name": {
"type": "string"
},
"id": {
"type": "long"
},
"map": {
"properties": {
"1": {
"properties": {
"id": {
"type": "long"
}
}
},
"2": {
"properties": {
"id": {
"type": "long"
}
}
},
"3": {
"properties": {
"id": {
"type": "long"
}
}
}
}
}
}
}
}
}
}
在此示例中,哈希图中的内部对象很短。
在现实生活中,我的 hashmap 对象可能很长。
这可以创建一个巨大的索引文件(很容易 1M 行)并且对于每个对象它重复完全相同的定义。
(例如,当存储在列表中时,映射不会重复)
有没有办法在弹性搜索中正确定义哈希图?
【问题讨论】:
-
你找到解决办法了吗?
-
不。改为使用列表。
标签: templates elasticsearch hashmap mapping