在 elasticsearch 中定义动态映射索引字段的最佳方法
Posted
技术标签:
【中文标题】在 elasticsearch 中定义动态映射索引字段的最佳方法【英文标题】:Best way to define dynamic mapping index fields in elasticsearch 【发布时间】:2022-01-11 03:19:04 【问题描述】:我有一些包含动态键的对象。如何定义映射以优化搜索查询。
例如 我有以下嵌套和对象类型字段
"similarities": [
"key1": "value1",
"key2": "value2"
,
"key3": "value1",
"key4": "value2"
]
"entity":
"version": "SO",
"Non-Commerical": "GGP"
对于结果,我需要 entity
包含 GGP
的所有文档,无论密钥是什么。
您能帮忙定义映射和搜索查询吗?
【问题讨论】:
【参考方案1】:您可以将dynamic mapping 用于entity.*
和copy_to 到另一个字段,比如entity_values
。然后你只需要一个 match
查询 entity_values
现在包含所有值。
【讨论】:
感谢您的回答,但实体字典中的键值是动态的,可以有多个 ket 值,我没有每个键名。copy_to
在这种情况下有效吗?
是的,如果您定义一个动态映射,它将自动应用于entity
内的所有键,并将所有值“复制”到累加器字段中。以上是关于在 elasticsearch 中定义动态映射索引字段的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章
ElasticSearch实战(十九)-索引字段动态映射灵活扩展