首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在ElasticSearch中正确定义hashmap

如何在ElasticSearch中正确定义hashmap
EN

Stack Overflow用户
提问于 2015-09-15 19:46:26
回答 2查看 7.7K关注 0票数 3

我在ElasticSearch中使用动态映射。

我使用它是因为我的索引很长,我需要使用模板特性来避免更新多个地方的定义(看我另一个这样的问题)。

我将发送以下json (Object ),其中包含一个HashMap作为示例:

代码语言:javascript
复制
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
    }
  }
}

这将创建以下索引

代码语言:javascript
复制
{
    "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的方法?

EN

回答 2

Stack Overflow用户

发布于 2015-09-15 22:17:20

在弹性搜索中是否有正确定义hashmap的方法?

在处理对象方面,Elasticsearch有对象类型嵌套型。嵌套对象被视为单独的文档,文档提供了很好的示例来理解它们的优点(和缺点)。

我认为,如果您想微调如何处理新的键值对添加,那么Elasticsearch的动态模板可能值得您探索一下,尽管您确实提到嵌套对象有一个严格的定义?

这可以创建一个巨大的索引文件(很容易创建100万行),并且对每个对象都重复完全相同的定义。(例如,当存储在列表中时,映射本身不会重复)

您指的是将要创建的大型映射吗?正如您所提到的,可以使用Array类型避免这种情况,因此是否可以更改map对象的结构以避免这种情况?或者地图键不像1,2,3,.那么简单?

票数 2
EN

Stack Overflow用户

发布于 2016-08-25 09:54:23

如果没有查询该字段,则可以在映射该字段时设置“已启用”:false。

代码语言:javascript
复制
  "map": {
    "type": "object",
    "enabled": false
  }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32594394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档