LINUX.ORG.RU

Проблема с агрегацией в elasticsearch

 


0

1

Привет.

Пытаюсь сделать агрегацию в эластике, чтобы получить уникальные значения поля.

Отправляю запрос вида:

{
	"size": 0,
	"aggregations": {
		"my_uniq": {
			"terms": {
				"field": "my_field"
			}
		}
	}
}

Проблема в том, что в my_field, в значениях есть точки. Эластик отрабатывает неправильно и возвращает что-то типа:

        {
          "key" : "i",
          "doc_count" : 5230
        },
        {
          "key" : "147",
          "doc_count" : 5190
        }

Хотя должно быть просто i.147. Как это можно побороть, никто с таким не сталкивался?

Да, если просто выполнять поиск, то все норм.

★★★★

Ответ на: комментарий от znenyegvkby

Сначала попробуй экранировать точку в значении.

Имеешь в виду при добавлении документа в индекс?

Да, и версию, пожалуйста, укажи.

2.3 и 5.2

Difrex ★★★★
() автор топика
Ответ на: комментарий от Difrex

Имеешь в виду при добавлении документа в индекс?

Да, конечно предварительно.

2.3 и 5.2

Спасибо. У меня к сожалению пока нет возможности протестировать, только завтра до рабочего компа доберусь. Сам с таким не сталкивался. Если тебе нужно срочно – спроси на github, там быстрее ответят (только версию, пожалуйста, не забудь указать).

https://github.com/elastic/elasticsearch/issues

znenyegvkby
()
Последнее исправление: znenyegvkby (всего исправлений: 1)

Это значит что по твоему полю прошелся токернизатор. В 5.2 надо сделать тип keyword вместо text/string. А в 2.x - добавить параметр «index: not_analyzed».

maxcom ★★★★★
()
Ответ на: комментарий от maxcom

В 5.2 надо сделать тип keyword вместо text/string

Спасибо. Уже сделал «index»: «not_analyzed» :)

Difrex ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.