在 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 中定义动态映射索引字段的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章

利用kibana插件对Elasticsearch进行映射

ElasticSearch实战(十九)-索引字段动态映射灵活扩展

Spring Data Elasticsearch 动态映射。将属性映射为键值?

聊聊elasticsearch7.8的模板和动态映射

elasticsearch的字符串动态映射

Elasticsearch-使用映射来定义各种文档