gpt4 book ai didi

nested - 在结果集中获取Elasticsearch嵌套对象的值(value)

转载 作者:行者123 更新时间:2023-12-03 02:08:51 26 4
gpt4 key购买 nike

我正在尝试使用Elasticsearch为电子商务网站构建方面导航。

商店产品可以有多个变体。我想到的文档结构如下所示:

PUT /products_test/product/1
{
"id": "1",
"manufacturer": "foobar",
"categories": [
"28554568",
"28554577",
"28554578"
],
"variants": [
{
"id": "1_a",
"color": "blue",
"size": "L"
"price": "67.99"
},
{
"id": "1_b",
"color": "red",
"size": "L"
"price": "69.99"
}
]
}

我将变体定义为嵌套类型。这样,以下查询将返回所有包含与过滤器匹配的变体的文档:
POST /products_test/product/_search
{
"query": {
"filtered": {
"query": {"match_all": {}},
"filter": {
"and": [
{"term": {"categories": "28554568"}},
{"terms": {
"variants.color": [
"red"
]
}}
]
}
}
}
}

现在,我真的很想获取与过滤器匹配的变体ID,以便在类别页面上显示该产品的变体。因此,在示例中,我想返回第二个变量(1_b)的ID。我只得到结果集中返回的文档的ID。有什么办法可以从嵌套对象中定义一个值吗?

最佳答案

当前无法获取与查询匹配的嵌套文档。这是一个known issue,并且已经为修复它付出了很多努力。问题的当前状态是,需要重构Elasticsearch的获取阶段以支持此功能。

这很重要并且会发生,因为重构也将使Elasticsearch的其他部分受益,但这是主要的重构。目前尚无何时可用的预计到达时间。

我会考虑对您的数据进行规范化,以便每个变体都包含“根对象”数据,然后在客户端内部进行分组。

另外,您可以调查父/子映射,但适用类似的限制(无法确定哪个子项与has_child查询匹配),但是由于子项是可以搜索的独立文档,它的确提供了更大的灵活性

关于nested - 在结果集中获取Elasticsearch嵌套对象的值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20139987/

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