我试图从弹性搜索集群中获取数据。索引名称:testIndex类型:testType主机:localhost端口:8080
我想使用Elastic Search 5.4版本并使用RestClient我想使用multimatch查询获取数据。
示例查询看起来像这样。
GET testIndex/testType/_search
{
"query": {
"multi_match": {
"query":"slabs",
"fields": ["field1","field2"]
}
}
}
最好的方法是什么?是否有可能我可以使用QueryBuilder构建查询并将其与rest客户端一起使用。
在版本6发布时,RestClient的QueryBuilder将可用。将有一个低级别和一个高级别的REST客户端。高级REST客户端将支持QueryBuilder。你可以在这里玩它:
QueryBuilder with High Level REST Client
在此之前,QueryBuilder不适用于REST客户端,因此对于5.4版,您需要自己构建查询。有很多方法可以做到这一点。
一种方法是使用像jTwig这样的语言模板。 Jettro Coenradie here解释了如何做到这一点的一个非常好的例子。
RestClient client = new RestClient(serverhost, port,username, password);
SearchSourceBuilder query = new SearchSourceBuilder();
SearchRequest searchRequest = new SearchRequest(IndexName);
searchRequest.source(query);
SearchResponse searchResponse = restClient.search(IndexName , query);
您应该使用Rest客户端创建与elasticsearch的连接以及查询请求和搜索响应,您应该使用SearchSourceBuilder,SearchRespons。对于查询,您可以使用弹性搜索的QueryBuilders。