gpt4 book ai didi

elasticsearch - Elasticsearch桶联合

转载 作者:行者123 更新时间:2023-12-02 22:37:16 27 4
gpt4 key购买 nike

我有以下示例文件 list :

curl -XPOST 'localhost:9200/test_data/test_row/_bulk?pretty' -H 'Content-Type: application/json' -d'
{ "index": {}}
{ "value": 1, "user_id": 1, "profiler_id": 1}
{ "index": {}}
{ "value": 3, "user_id": 1, "profiler_id": 1}
{ "index": {}}
{ "value": 3, "user_id": 1, "profiler_id": 2}
{ "index": {}}
{ "value": 1, "user_id": 2, "profiler_id": 1}
{ "index": {}}
{ "value": 1, "user_id": 2, "profiler_id": 2}
{ "index": {}}
{ "value": 1, "user_id": 3, "profiler_id": 1}
{ "index": {}}
{ "value": 2, "user_id": 3, "profiler_id": 2}
{ "index": {}}
{ "value": 3, "user_id": 3, "profiler_id": 2}
{ "index": {}}
{ "value": 2, "user_id": 4, "profiler_id": 1}
{ "index": {}}
{ "value": 1, "user_id": 4, "profiler_id": 2}
{ "index": {}}
{ "value": 3, "user_id": 4, "profiler_id": 2}
'

我想统计所有回答profiler_id = 1和value = 1且profiler_id = 2和value 1或2的用户。这意味着只有用户2和3符合这两个条件。

我知道如何对术语进行存储桶聚合并按profiler_id计算匹配的文档,但是Elasticsearch中有没有一种方法可以同时对两个条件都匹配的用户进行计数?
{
"query": {
"bool": {
"must": [],
"must_not": [],
"should": [
{
"bool": {
"must": [
{
"term": {
"profiler_id": 1
}
},
{
"term": {
"value": 1
}
}
]
}
},
{
"bool": {
"must": [
{
"term": {
"profiler_id": 2
}
},
{
"terms": {
"value": [
1,
2
]
}
}
]
}
}
]
}
},
"size": 0,
"aggs": {
"genres": {
"terms": {
"field": "profiler_id"
},
"aggs": {
"type_count": {
"cardinality": {
"field": "user_id"
}
}
}
}
}
}

请给我每个 profiler_id的计数,这不是我想要的。我不确定如何计算两个存储桶中相交文档的用户。

最佳答案

您是否要计算符合这些条件的唯一用户数?如果是这样,您可以将should子句移到must参数中(强制执行A​​ND),并在user_id字段上使用基数聚合

如果没有,您可以举一个您想要的输出示例吗?

关于elasticsearch - Elasticsearch桶联合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47100127/

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