gpt4 book ai didi

elasticsearch - 从elasticsearch中的对象获取所有键的方面

转载 作者:行者123 更新时间:2023-11-29 02:56:31 25 4
gpt4 key购买 nike

假设我有以下文档:

{
"title": "Some Title",
options: {
"key5": 1,
"key3": 0,
"key1": 1,
}
},
{
"title": "Some Title",
options: {
"key2": 0,
"key3": 0,
"key5": 1,
}
}

我想使用 facet 从 options 对象中获取所有键。

如果 options 是一个简单的键数组作为字符串,我会简单地使用这样一个 facet:

"facets" : {
"options" : {
"terms" : {
"field" : "options"
}
}
}

但这对我不起作用。

因此,如果查询返回这两个文档,我应该得到这些键:["key5","key3","key1","key2"]

我真正需要什么样的方面?

最佳答案

您不能使用构面来做到这一点。您有 2 个选择 -

  1. 保持当前文档结构并从类型映射中获取键列表(参见 http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/indices-get-mapping.html )。这会带来您的类型的方案,其中包含遇到的所有字段。

  2. 改变你的结构。将键也保留为一个字段,这样您的选项数组就变成了一个文档数组,例如:

    "options" :<br/>
    [<br/>
    { "key" : "key1", "value" : 1},<br/>
    { "key" : "key2", "value" : 0}<br/>
    ]

您可能希望在搜索或分面时保留键值对的上下文,因此将其配置为嵌套类型 (http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-nested-type.html)。然后你可以在“options.key”字段上进行分面以获得顶级键列表。

关于elasticsearch - 从elasticsearch中的对象获取所有键的方面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19479786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com