0
제목 및 텍스트 필드에 특정 검색어가 포함 된 문서를 검색하는 데 문제가 있으며 제로 이상의 값이 될 수있는 상태 필드와 일치해야합니다. 적어도 하나는 일치해야합니다.탄성 검색 쿼리가 예상 결과를 산출하지 않습니다.
"bool" : {
"must" : {
"multi_match" : {
"query" : "test",
"fields" : [ "title", "text" ]
}
},
"should" : {
"terms" : {
"state" : [ "NEW" ]
}
},
"minimum_should_match" : "1"
}
다음과 같은 데이터가 결과로 반환하면 안
는 다음 쿼리를 감안할 때?{
"_shards": {
"failed": 0,
"successful": 5,
"total": 5
},
"hits": {
"hits": [
{
"_id": "JXnEkYFDQp2feATMzp2LTA",
"_index": "tips",
"_score": 1.0,
"_source": {
"state": "NEW",
"text": "This is a test",
"title": "Test"
},
"_type": "tip"
}
],
"max_score": 1.0,
"total": 1
},
"timed_out": false,
"took": 1
}
내 테스트에서는 그렇지 않습니다. 내가 도대체 뭘 잘못하고있는 겁니까?
다음은 출력 된 쿼리를 생성하는 Java 코드입니다.
SearchRequestBuilder builder = client.prepareSearch("tips").setTypes("tip");
BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
if(searchTermIsNotEmpty(searchTerm)){
MultiMatchQueryBuilder qb = QueryBuilders.multiMatchQuery(
searchTerm,
"title", "text"
);
boolQuery.must(qb);
}
if(filters.size() > 0){
boolQuery.should(QueryBuilders.termsQuery("state",filters));
boolQuery.minimumNumberShouldMatch(1);
}
if(boolQuery.hasClauses()){
builder.setQuery(boolQuery);
}
logger.info(boolQuery.toString());
SearchResponse result = builder.execute().actionGet();
return result.toString();
대단히 감사합니다.