【发布时间】:2020-02-10 15:01:10
【问题描述】:
记录以这种格式存在:{user_id, state}。
我需要编写一个 elasticsearch 查询来查找记录列表中同时存在两种状态的所有 user_id。
例如,如果存储的样本记录是:
{1,a}
{1,b}
{2,a}
{2,b}
{1,a}
{3,b}
{3,b}
运行此示例的查询的输出将是
{"1", "2"}
到目前为止我已经尝试过了:
{
"size": 0,
"query": {
"bool": {
"filter": {
"terms": {
"state": [
"a",
"b"
]
}
}
}
},
"aggs": {
"user_id_intersection": {
"terms": {
"field": "user_id",
"min_doc_count": 2,
"size": 100
}
}
}
}
但这会返回
{"1", "2", "3"}
【问题讨论】:
-
这两个状态的列表是之前定义的吗?如果是,您可以查询状态 A 和状态 B 的 AND,然后使用唯一修饰符计算 user_id 上的构面
-
@mirzak 我已经编辑了问题以显示我到目前为止所做的尝试。
-
@Mysterion 状态列表已定义
标签: elasticsearch