Я использую Elasticsearch 1.4.0 и опробовать функцию агрегирования. Я продолжаю получать SearchParseException с сообщением Cannot find aggregator type [fieldName] in [aggregationName]
.Агрегация на основе двух полей в результатах поиска Elasticsearch в SearchParseExcepetion с «не может найти тип агрегатора»
В формате JSON мои данные выглядят следующим образом.
{ "userCode": "abcd123", "response": 1 }
{ "userCode": "abcd123", "response": 1 }
{ "userCode": "abcd123", "response": 0 }
{ "userCode": "wxyz123", "response": 0 }
{ "userCode": "wxyz123", "response": 0 }
{ "userCode": "wxyz123", "response": 1 }
Обратите внимание, есть 2 пользователей, abcd123
и wxyz123
, и я просто хочу, чтобы подсчитать количество раз, каждый откликнулся 1 и 0. Если я ставлю эти данные в таблицу SQL в SQL выберите синтаксис, я будет делать что-то подобное (если этот пример SQL помогает проиллюстрировать то, что я пытаюсь сделать).
select userCode, response, count(*) as total
from response_table
group by userCode, response
Я ожидаю, что набор результатов будет выглядеть следующим образом.
abcd123, 0, 1 //user abcd123 responded 0 once
abcd123, 1, 2 //user abcd123 responded 1 twice
wxyz123, 0, 2 //user wxyz123 responded 0 twice
wxyz123, 1, 1 //user wxyz123 responded 1 once
Для Elasticsearch моя агрегация JSON выглядит следующим образом.
{
"aggs": {
"users": {
"terms": { "field": "userCode" },
"aggs": {
"responses" : {
"terms": { "field": "response" }
}
}
}
}
}
Однако я получаю SearchParseException: Cannot find aggregator type [responses] in [aggs]
. Что я делаю не так?
Если это помогает, файл сопоставления очень прост и выглядит следующим образом.
{
"data": {
"properties": {
"userCode": {
"type": "string",
"store": "yes",
"index": "analyzed",
"term_vector": "no"
},
"response": {
"type": "integer",
"store": "yes",
"index": "analyzed",
"term_vector": "yes"
}
}
}
}
Код, который вы опубликовали (включая сопоставления, фактические данные), работает для меня. В 1.4.0. –