弹性-使用Java高级Rest客户端执行字符串查询

时间:2019-10-27 15:25:46

标签: java elasticsearch lucene

我正在使用Java为我们的公司编写服务,以使用户更容易查询Elastic。对于该任务,我使用的是“ Java高级REST客户端”。

假设我有一个查询,如下所示:

host='hostnameOne' AND (owner='Sam' OR cpuNum=5) OR type LIKE 'Ubuntu'

有没有一种使用QueryBuilder或类似工具的方式来轻松构建此查询?我看到有一个叫做“ simpleQueryStringQuery”的东西,但是在尝试转换上面的查询时失败了。

1 个答案:

答案 0 :(得分:0)

您的选择如下:

  1. 使用query_string,不建议将其用于用户生成的输入。它不会完全按照您的预期工作。此外,如果不禁用某些特殊字符和关键字,可能会很危险
  2. 使用simple_query_string,它是query_string的面向用户的替代方法。它不支持AND,OR,LIKE。您将需要解析输入并将其转换为simple_query_string语法
  3. 使用新的sql rest api。您提供的示例似乎像SQL命令https://www.elastic.co/guide/en/elasticsearch/reference/current/sql-rest.html的WHERE子句。