目前我的查询请求正文看起来像
{
"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();
对于“queryString”部分,我更喜欢基于 api 的方法。我找不到任何处理请求的“query_string”部分的 api。有用于 match_all、match、term 等等的 API,但没有用于 query_string
非常感谢任何帮助
最佳答案
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();
关于java - 如何使用 Elasticsearch Java Api 使用 query_string 创建查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30827027/