2013-11-20 4 views
0

У меня есть поле диапазона с именем salary типа int4range для моей базы данных Postgres. Я намерен индексировать это поле в Elasticsearch. Могу ли я узнать, каков рекомендуемый способ сделать это? Из того, что я знаю, нет типа диапазона в Elasticsearch, только целое число.Индексирование индексирования Postgres int4range range

Итак, нужно ли разобрать начальную и конечную границы int4range по отдельности и проиндексировать их как salary_begin и salary_end и во время поиска использовать фильтр диапазона, или есть лучший подход?

Postgres ==> int4range ==> salary (only 1 field in PSQL) 

Elasticsearch ==> integer ==> [salary_begin, salary_end] (2 index fields in ES) 

ответ

1

Не нужно ничего разбирать. Просто используйте lower() и upper():

http://www.postgresql.org/docs/current/static/functions-range.html

+0

Да, ТКС для метода синтаксического анализа. На самом деле меня больше интересует, как интегрироваться с Elasticsearch для int4range. – mech

+0

Я не знаком с ElasticSearch, поэтому я не был бы правильным человеком для этого. Тем не менее, я был бы очень удивлен, если Lucene или ElasticSearch предложили что-либо, отдаленно эквивалентное диапазонам диапазонов Postgres с точки зрения функциональности. Я бы ожидал либо индексировать диапазоны, сколько два разных поля int, как и в Postgres до 9.2, что приводит к главным образом бесполезным индексам btree, а не диапазонам индексов gist. –

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