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
任何帮助将非常感激
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)