2013-11-18 2 views
0

Я использую Postgres как хранилище данных. Мне нужно делать бесплатный текстовый поиск по многим полям. Мой администратор баз данных рекомендует не использовать Postgres для свободного поиска текста. Теперь я рассматриваю поиск elastics. Вопрос заключается в том, что делать, если пользователь фильтрует как бесплатный текст, так и некоторый структурированный размер. Должен ли я запрашивать как эластичные, так и постгревы и пересекать их, или я могу обслуживать все запросы из резины? Что делать, если в фильтре нет свободного текста - эластично подходит для моего общего запроса?Должен ли я использовать elasticsearch для поиска без текста?

EDIT: в соответствии с запросом дополнительной информации. база данных будет содержать несколько миллионов строк. Я не могу дать конкретные данные о данных, кроме того, что строка будет содержать ~ 30 столбцов, половина из них - строки, между одним словом и несколькими предложениями. Причины использования эластичных материалов - это не просто отказ администраторов баз данных от полного текстового индекса в postgres, но и эластичность также дает ранжирование результатов и определенную семантику текстового поиска.

+0

Извините - это слишком расплывчато. * Почему * не являются подходящими для PostgreSQL fts или триграммными индексами? Маловероятно, что запуск одного запроса по двум отдельным системам будет очень забавным, но без хотя бы некоторых подсказок о типах запросов, номерах и размере базы данных никто не может много помочь. –

+0

Если вам нужны функции запроса, доступные только для поиска эластичности, то вы уже приняли решение. Хотя длина документа с одним словом до нескольких предложений не похожа на типичную рабочую нагрузку на текстовый поиск. –

ответ

1

Это правда, что elasticsearch отлично подходит для полнотекстового поиска, поскольку он использует lucene под обложками, но он также очень хорош для структурированного поиска через filters. Еще одна отличная вещь, которую вы можете сделать с ней - это аналитика данных, которая позволяет визуализировать агрегации ваших данных.

При этом вам не обязательно нужны полнотекстовые поисковые запросы, чтобы эффективно использовать поиск elastics. Есть много случаев, когда elasticsearch используется только для одного из тех трех аспектов, которые я упомянул: полнотекстовый поиск, структурированный поиск или анализ данных. Следующий шаг - также объединить их.

Ваша обычная ситуация довольно распространена, и я предлагаю пойти дальше и рассмотреть возможность запуска структурированных запросов также против elasticsearch вместо запроса двух систем. Единственным препятствием, которое я могу предвидеть, могут быть документальные отношения, которые должны быть должным образом представлены и обрабатываться внутри elasticsearch.

Посмотрите на поиск elasticsearch query DSL, используемый для представления запросов и эффективно сочетающий структурированный и неструктурированный поиск вместе.

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