2016-11-11 51 views
0

Elasticsearch имеет отличную DSL. Однако как мы реализуем пользовательский язык запросов, который позволит пользователю говорить, например. Name = Dwayne OR Johnson похоже на то, что Atlassian Jira реализовала как JQL.Человеческий дружественный язык запросов, аналогичный JQL (язык запросов jira) для elasticsearch

Я прошел через https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html. Но синтаксис lucene | и & могут быть еще более техничными для пользователя.

Другим вариантом было бы реализовать синтаксический анализатор пользовательских запросов и тип запроса как elasticsearch плагин, вероятно, с помощью ANTLR или пропаренный

Однако, если есть библиотеки/рамки, которые уже делает это, то было бы проще просто использовать их. (например, http://www.loc.gov/standards/sru/cql/spec.html)

Итак, вопрос в том, существуют ли такие рамки/библиотеки?

+0

Вы проверили 'simple_query_string' https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-simple-query-string-query.html? – Val

+0

Да, я упомянул, что в моем вопросе тоже используется синтаксис lucene, который, по моему мнению, не настолько удобен для пользователя. Спасибо за ответ –

+0

Нет вы упомянутых 'query_string',' simple_query_string' - это более простой вариант 'query_string', ориентированный на конечных пользователей. – Val

ответ

0

Спасибо, я внедрил использование настраиваемого плагина elasticsearch.

0

Если это может помочь, у меня были более или менее те же вопросы. Тогда я работаю для библиотеки js для этого. Он имеет две основные функции: - текст ввода автоматического завершения, который помогает пользователю вводить запрос в синтаксисе, вдохновленном языком lucene. - это функция, которая преобразует запрос, введенный пользователем в язык REST запрос стандартный синтаксис (OData или FIQL)

Каждая вещь находится на GitHub: https://github.com/benjaminpochat/lucene-like-query-for-REST

Это все еще в стадии строительства, но если он совпадает с ваши потребности, дайте мне знать.