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



我正在为我们公司编写一个服务,使用Java,以便用户更容易地查询Elastic。对于这个任务,我使用"Java高级REST客户端"。

假设我有一个查询,看起来像这样:

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

有没有一种方法可以使用QueryBuilder或类似的东西来轻松构建这个查询?我看到有一个叫做"simpleQueryStringQuery"的东西,但我在尝试转换上面的查询时失败了。

您的选择如下:

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

最新更新