Ниже приведены записи в моем индексе тестовых данных и с использованием эластичного поиска версии 5.6.
[
{
"_index": "test-data",
"_type": "log",
"_id": "123",
"_score": 2,
"_source": {
"request": "/test-url/poll?request_ids=1",
"user": "test1"
}
},
{
"_index": "test-data",
"_type": "log",
"_id": "126",
"_score": 2,
"_source": {
"request": "/test-url/poll?request_ids=2",
"user": "test1"
}
},
{
"_index": "test-data",
"_type": "log",
"_id": "124",
"_score": 2,
"_source": {
"request": "/test-url/poll?request_ids=2",
"user": "test1"
}
},
{
"_index": "test-data",
"_type": "log",
"_id": "125",
"_score": 2,
"_source": {
"request": "/test-url/poll?request_ids=2",
"user": "test1"
}
},
{
"_index": "test-data",
"_type": "log",
"_id": "128",
"_score": 2,
"_source": {
"request": "/test-url/poll?request_ids=2",
"user": "test2"
}
}
]
Мне нужно найти количество отдельных записей, которые имеют уникальную комбинацию запроса и пользователя и попробовали следующий запрос. Я ожидаю 3 в результате, но получаю 5.
{
"query": {
"bool": {
"must": [
{
"exists": {
"field": "request"
}
},
{
"regexp": {
"request.keyword": "/test-url/poll\\?request_ids=.*"
}
}
]
}
},
"_source": ["request.keyword", "user.keyword","request", "user"],
"aggs": {
"request_count": {
"cardinality": {
"script": {
"lang": "painless",
"source": "[doc['request.keyword'], doc['user.keyword']]"
}
}
}
}
}
Может кто-нибудь подсказать, что не так с запросом или каким-либо другим вариантом решения этой проблемы?