Поля агрегации эластичного поиска с отображением типа текста - PullRequest
0 голосов
/ 04 июня 2019

Я пытаюсь агрегировать в поле с type text.

Настройка отображения:

"Group":{"type":"text"}

И запрос:

{
    "query": {
        "term": {
            "request_id": 22
        }
    },
    "size": 0,
    "aggs": {
        "sets": {
            "terms": {"field": "Group.keyword"}
        }
    }
}

Это дает пустые результаты:

"hits": {
    "total": 7463,
    "max_score": 0,
    "hits": []
},
"aggregations": {
    "sets": {
        "doc_count_error_upper_bound": 0,
        "sum_other_doc_count": 0,
        "buckets": []
    }
}

Без .keyword дает illegal_argument_exception .. reason: ... alternatively use a keyword field instead..

Кроме того, значения в поле Group: Grp1 и Grp2.

Как я могу агрегировать наборы на основе этих двух значений?

1 Ответ

2 голосов
/ 04 июня 2019

Обновить отображение на:

"Group": {
    "type": "text",
    "fields": {
      "keyword": {
        "type": "keyword"
      }
    }
  }

После внесения вышеуказанных изменений в сопоставление переиндексируйте документы, а затем вы можете использовать Group.keyword

Если вы никогда не захотите полнотекстовый поиск по значениям поля Group, вам следует сохранить его в качестве ключевого слова.

"Group":{"type":"keyword"}

В этом случае вы можете агрегировать по самому полю Group.

...