2016-11-11 132 views
0

Elasticsearch拥有很棒的DSL本身。但是,我们如何实现一种自定义查询语言,以允许用户说出例如名称= Dwayne OR Johnson类似于Atlassian Jira作为JQL实现的内容。我已经通过https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html。但lucene语法|和&对用户来说可能更具技术性。弹性搜索类似于JQL(jira查询语言)的人类友好查询语言

另一种选择是可能通过使用ANTLR或实现自定义的查询分析器和查询类型elasticsearch插件半熟

但是,如果有库/已经做这个框架,那么它会更容易只使用他们。 (例如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

它仍在建设中,但如果它与匹配你的需求,让我知道。