2015-03-16 4 views
0

Предположим, у меня есть поле, чтобы указать целое число в диапазоне от 1 до 7 (указывает на возраст от 1 до 7)elasticsearch, соответствуют всем, для поиска целого диапазона?

(1,5) (2,7)

Я также имеют специальное значение, что all средства ages don't matter

Я хотел бы проиндексировать и искать это поле в поиске elastics.

Когда пользователь ищет all возраст, я хотел бы вернуться, по существу, match_all.
Какова правильная ценность, которую нужно добавить в индекс elasticsearch для поддержки этого типа поиска?

У меня также есть значение null для поля, когда мы не уверены в возрасте.

ответ

0

Я не верю, что Elasticsearch имеет тип поля «диапазон», поэтому вы либо застреваете со строкой, например. «(1,5)», где вы не могли найти, что там был возраст 2 или разделялся на два поля, например. «age_low», «age_high».

С двумя полями, если возраст не имеет значения, вы можете оставить их пустыми или установить их глупыми значениями, например. (0, 200).

0

Лучший способ сделать это с точки зрения производительности - проиндексировать каждое целое число в диапазоне (байтах) в поле байта. Поскольку поля могут содержать массивы, вы можете просто найти определенный возраст и найти весь документ, соответствующий данному возрастному диапазону. Для «всего» случая просто сохраните документ со значениями от 0 до 150.

Если вы хотите придерживаться своего синтаксиса, вы можете использовать transforms для анализа строки '(x, y) ...' и сохранить значения в индексе (но не в документе JSON _source).

 Смежные вопросы

  • Нет связанных вопросов^_^