如何使用Elasticsearch Java Api使用query_string创建查询

Abh*_*der 4 java java-ee elasticsearch

目前我的查询请求正文如下

{
  "query": {
    "query_string": {
      "default_field": "file",
      "query": "Email OR @gmail.com @yahoo.com"
    }
  },
  "highlight": {
    "fields": {
      "file": {

      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我的java代码看起来像

String queryString = "{" 
                + "\"query_string\": " 
                    + "{"
                        + "\"default_field\":"
                    + " \"file\","
                            + " \"query\": \"Email OR @gmail.com @yahoo.com\""
                            + "}"
                            + "}";
Run Code Online (Sandbox Code Playgroud)

以下API调用

SearchRequestBuilder searchRequestBuilder = client.prepareSearch()
                .setIndices("resume")
     .setTypes("docs").setQuery(queryString).addHighlightedField("file");

SearchResponse response = searchRequestBuilder.execute().actionGet();
Run Code Online (Sandbox Code Playgroud)

我更喜欢基于api的方法用于"queryString"部分.我无法找到任何处理请求的"query_string"部分的api.有match_all,match,term等等api,但不适用于query_string

任何帮助将非常感激

mol*_*are 8

QueryBuilders是用于创建任何查询的工厂,包括query_string.来自文档:

import static org.elasticsearch.index.query.QueryBuilders.*;
QueryBuilder qb = queryStringQuery("+kimchy -elasticsearch");
Run Code Online (Sandbox Code Playgroud)

您的查询将按如下方式构建:

QueryBuilder qb = queryStringQuery("Email OR @gmail.com @yahoo.com").defaultField("file");
Run Code Online (Sandbox Code Playgroud)

完整的例子是:

SearchRequestBuilder searchRequestBuilder = client.prepareSearch()
            .setIndices("resume")
 .setTypes("docs").setQuery(qb).addHighlightedField("file");

SearchResponse response = searchRequestBuilder.execute().actionGet();
Run Code Online (Sandbox Code Playgroud)