我使用以下搜索查询:
{" from":" 0"," size":" 20"," query":{ " QUERY_STRING" :{" fields" :["标题"],"查询" :"卖家*"," analyze_wildcard":true}}}
这个卷曲命中以适当的分数返回我的命中/结果,而我通过elasticsearch运输客户端尝试相同,如:
String queryString = "{"
+ "\"query_string\" : {\n" +
" \"fields\" : [\"title\"],\n" +
" \"query\" : "+ "\"" + searchQuery + "\",\n" +
" \"analyze_wildcard\": true \n" +
" }}\n";
SearchResponse response2 = client.prepareSearch(indexName).setTypes(successZoneTypeName).setFrom(0).setSize(30).setQuery(QueryBuilders.queryStringQuery(queryString)).get();
这会针对所有匹配返回相同分数的结果。
即使我尝试使用jest客户端,结果也一样,但我没有在结果中获得正确的分数。
答案 0 :(得分:2)
这不是通过Java构建查询字符串查询的正确方法。你应该这样做:
QueryBuilder qs = QueryBuilders.queryStringQuery("\"" + searchQuery + "\"")
.field("title")
.analyzeWildcard(true);
SearchResponse response2 = client.prepareSearch(indexName)
.setTypes(successZoneTypeName)
.setFrom(0)
.setSize(30)
.setQuery(qs)
.get();