gpt4 book ai didi

elasticsearch - 使用Elasticsearch连接查询和聚合

转载 作者:行者123 更新时间:2023-12-03 01:43:35 25 4
gpt4 key购买 nike

使用ElasticSearch 5.4.2,请考虑如下映射:

"mappings": {
"product": {
"properties": {
"enabled": {
"type": "boolean"
},
// etc...
}
},
"cartproduct": {
"properties": {
"productId": {
"type": "keyword"
},
// etc...
}
}
}

我只想针对 cartproduct产品按 productId汇总 enabled:true

目前,我正在这样做。聚合工作正常,但与产品没有任何关系(意味着禁用的产品已聚合,这是不期望的):
"query": {
"bool": {
"filter": {
"term": {
"_type": "cartproduct"
}
}
},
"aggs": {
"products": {
terms: {
field: 'productId'
}
}
}
}

如果我尝试在此查询中添加 enabled,则显然表明该字段不存在。但是,如果我在 product上下文中搜索,则无法汇总结果...

有没有一种方法可以在 enabled文档中不添加 cartproduct来实现?

谢谢

编辑

一些文档样本:
// product
{
"_index": "store",
"_type": "product",
"_id": "product:8ca2713e",
"_version": 1,
"_score": 1,
"_source": {
"categories": [
10
],
"enabled": true, <--- MATCH THIS FIELD
"userinput": false,
"createdAt": "2017-08-14T16:11:10.182Z",
"updatedAt": "2017-08-14T16:11:40.978Z",
"title": "Tart"
}
}

// cartproduct
{
"_index": "store",
"_type": "cartproduct",
"_id": "cartproduct:6048764d",
"_version": 1,
"_score": 1,
"_source": {
"createdAt": "2017-08-16T16:45:39.978Z",
"productTitle": "Tart",
"productId": "8ca2713e", <-- AGGREGATE ON THIS FIELD
"hasComment": false
}
}

最佳答案

在对文档进行了一些挖掘和理解之后,我找到了一个可行的解决方案:

"mappings": {
// ...
"cartproduct": {
"_parent": {
"type": "product"
},
"properties": {
"productId": {
"type": "keyword"
},
// etc...
}
}
}

和搜索查询:
{
"query": {
"has_parent": {
"parent_type": "product",
"query": {
"term": {
"enabled": true
}
}
}
},
"aggs": {
"products": {
"terms": {
"field": "productId"
}
}
}
}

关于elasticsearch - 使用Elasticsearch连接查询和聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45730831/

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