Как создать запрос с помощью 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();