Код: Выделить всё
org.elasticsearch.client
elasticsearch-rest-high-level-client
7.5.0
type here
Код: Выделить всё
{
"_source": ["parent", "title", "url"],
"query": {
"bool": {
"should": [
{
"match": {
"content": {
"query": "周武陵王",
"boost": 1
}
}
},
{
"match": {
"title": {
"query": "周武陵王",
"boost": 3
}
}
}
]
}
},
"size": 10
}
Код: Выделить всё
public SearchResponse searchByDsl(String index, String dslQuery) {
SearchRequest searchRequest = new SearchRequest(index);
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
sourceBuilder.query(QueryBuilders.wrapperQuery(dslQuery));
searchRequest.source(sourceBuilder);
SearchResponse response = null;
try {
response = highLevelClient.search(searchRequest, RequestOptions.DEFAULT);
} catch (IOException e) {
throw new RuntimeException(e);
}
return response;
}
Он выдает исключение:
"Исключение Elasticsearch [type=parsing_Exception, Reason=[ _source] запрос неверный, после имени запроса нет start_object]"
Я попробовал это, и это сработало.
Код: Выделить всё
public SearchResponse searchByKeyWord(String word){
SearchRequest searchRequest = new SearchRequest("myIndex");
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(QueryBuilders.boolQuery()
.should(QueryBuilders.matchQuery("content", word).boost(1))
.should(QueryBuilders.matchQuery("title", word).boost(3))
);
searchSourceBuilder.size(1);
searchSourceBuilder.fetchSource(new String[]{"title", "content", "url"}, new String[]{});
searchRequest.source(searchSourceBuilder);
SearchResponse searchResponse = null;
try {
searchResponse = highLevelClient.search(searchRequest, RequestOptions.DEFAULT);
} catch (IOException e) {
log.error("search error", e);
}
return searchResponse;
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... query-malf