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

java - 如何使用Elasticsearch Java Api使用query_string创建查询,第1张

目前我的查询请求正文如

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

      }
    }
  }
}

我的java代码看起来像

String queryString = "{" 
                  "\"query_string\": " 
                      "{"
                          "\"default_field\":"
                      " \"file\","
                              " \"query\": \"Email OR @gmail.com @yahoo.com\""
                              "}"
                              "}";

以下API调用

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

SearchResponse response = searchRequestBuilder.execute().actionGet();

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

任何帮助都会非常感激

最佳答案:

1 个答案:

答案 0 :(得分:6)

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

import static org.elasticsearch.index.query.QueryBuilders.*;
QueryBuilder qb = queryStringQuery(" kimchy -elasticsearch");

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

QueryBuilder qb = queryStringQuery("Email OR @gmail.com @yahoo.com").defaultField("file");

完整的例子是:

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

SearchResponse response = searchRequestBuilder.execute().actionGet();
本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复