У меня проблема с написанием запросов эластичного поиска с вложенным полем.Я думаю, вы могли бы помочь мне, потому что я единственный, кто использует Elastic в своей компании, и я не знаю, как решить мою проблему в одиночку.
Вот как выглядят мои документы по ES в этом индексе (оченьупрощенная версия)
{
"_index":"index_test",
"_type":"type_test",
"_id":"1",
"_score":1.0,
"_source":{
"category":1,
"value_period":[
{
"value":5.4,
"month":"2019-01"
}
],
"client_id":"80",
}
},
{
"_index":"index_test",
"_type":"type_test",
"_id":"2",
"_score":1.0,
"_source":{
"category":1,
"value_period":[
{
"value":10.0,
"month":"2019-02"
}
],
"client_id":"80",
}
}{
"_index":"index_test",
"_type":"type_test",
"_id":"2",
"_score":1.0,
"_source":{
"category":2,
"value_period":[
{
"value":20.0,
"month":"2019-02"
}
],
"client_id":"80",
}
}
Вот вопрос: мне нужно написать 4 запроса для четырех разных вариантов использования:
2 простых запроса: «сумма в месяц» и «сумма в категории»
- 1-й: агрегация date_histogram (во вложенном поле "value_period.month") и агрегация суммы (в value_period.value), чтобы получить простую сумму по месяцам (1 значение в месяц).
- 2-й: термин агрегация (в поле "категория") и сумма агрегации (в value_period.value), чтобы получить простое значение для категории
2 запроса, немного более сложных: "сумма в месяц на категорию "и" сумма на категорию в месяц "
3-й: агрегация date_histogram (во вложенном поле" value_period.month "), агрегация термина (в поле" category ")и сумма агрегации (по значению_периod.value) для получения суммы в месяц по категории
4-й: агрегация сроков (в поле «категория»), агрегация даты_гистограммы (во вложенном поле «value_period.month») иагрегация сумм (on value_period.value) для получения суммы за категорию в месяц
Для 1-го случая (простое значение в месяц) я уже написал запрос, и он работает:
{
"aggs":{
"nested_field":{
"nested":{
"path":"value_period"
},
"aggs":{
"date_agg_interval":{
"date_histogram":{
"field":"value_period.month",
"interval":"1M",
"format":"yyyy-MM",
"min_doc_count":0
},
"aggs":{
"agg_sum":{
"sum":{
"field":"value_period.value"
}
}
}
}
}
}
}
}
Для 2-го случая (значение для категории) я пробовал этот запрос, но мои результаты агрегирования пусты, и я не знаю, почему ... Вот запрос:
{
"aggs":{
"nested_field":{
"nested":{
"path":"value_period"
},
"aggs":{
"agg_category":{
"terms":{
"field":"category"
},
"aggs":{
"agg_sum":{
"sum":{
"field":"value_period.value"
}
}
}
}
}
}
}
}
Для 3-го и 4-го (еще один уровень агрегации) я много пробовал, но ничего не получается.
Я действительно хочу заранее поблагодарить всех, кто поможет мне и рассмотрит мою просьбу.
PS: извините за мой уровень английского, я француз.
Denis