我在ElasticSearch中使用动态映射。
我使用它是因为我的索引很长,我需要使用模板特性来避免更新多个地方的定义(看我另一个这样的问题)。
我将发送以下json (Object ),其中包含一个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中的内部对象是短的。
在现实生活中,我的hashmap的目标可能很长。
这可以创建一个巨大的索引文件(很容易创建100万行),并且对每个对象都重复完全相同的定义。
(例如,当存储在列表中时,映射本身不会重复)
在弹性搜索中是否有正确定义hashmap的方法?
发布于 2015-09-15 22:17:20
在弹性搜索中是否有正确定义hashmap的方法?
在处理对象方面,Elasticsearch有对象类型和嵌套型。嵌套对象被视为单独的文档,文档提供了很好的示例来理解它们的优点(和缺点)。
我认为,如果您想微调如何处理新的键值对添加,那么Elasticsearch的动态模板可能值得您探索一下,尽管您确实提到嵌套对象有一个严格的定义?
这可以创建一个巨大的索引文件(很容易创建100万行),并且对每个对象都重复完全相同的定义。(例如,当存储在列表中时,映射本身不会重复)
您指的是将要创建的大型映射吗?正如您所提到的,可以使用Array类型避免这种情况,因此是否可以更改map对象的结构以避免这种情况?或者地图键不像1,2,3,.那么简单?
发布于 2016-08-25 09:54:23
如果没有查询该字段,则可以在映射该字段时设置“已启用”:false。
"map": {
"type": "object",
"enabled": false
}https://stackoverflow.com/questions/32594394
复制相似问题