Как создать запрос с помощью query_string, используя Elasticsearch Java Api

В настоящее время тело моего запроса выглядит

{
  "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". Я не могу найти API, который обрабатывает "query_string" часть запроса. Существуют apis для match_all, match, term и т. Д., Но не для query_string

Любая помощь могла бы быть полезна

1 ответ

Решение

QueryBuilders это фабрика для создания любого запроса, включая query_string, Из документации:

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();
Другие вопросы по тегам