我需要在某些条件下从aws elasticsearch查询一些数据。
我使用BoolQueryBuilder
参数是关于pretty = true
这是我的代码:
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
QueryBuilder qb1 = QueryBuilders.matchQuery("personId", personId);
boolQueryBuilder.must(qb1);
sourceBuilder.query(boolQueryBuilder);
result = searchUtil.getResult(params, sourceBuilder);
以下是错误消息
{
"error" : {
"root_cause" : [
{
"type" : "parsing_exception",
"reason" : "Unknown key for a START_OBJECT in [queryBuilder].",
"line" : 1,
"col" : 17
}
],
"type" : "parsing_exception",
"reason" : "Unknown key for a START_OBJECT in [queryBuilder].",
"line" : 1,
"col" : 17
},
"status" : 400
}
有人可以帮忙吗?!请!
答案 0 :(得分:1)
不确定代码中result = searchUtil.getResult(params, sourceBuilder);
的用途。
您可以阅读this官方ES文档,以使用正在使用的查询构建器来构建查询,也可以参考this官方ES示例来构建查询。
这很简单,我想您出错的原因是(由于没有完整的信息)您正在使用其他实用程序来获取无法处理JSON的结果。
编辑:添加了使用Elasticsearch的Java高级rest-client版本7.4在本地工作的代码。
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
QueryBuilder qb1 = QueryBuilders.matchQuery("personId", "kimchy");
boolQueryBuilder.must(qb1);
sourceBuilder.query(boolQueryBuilder);
//String searchJson = sourceBuilder.toString(); // if you want to print search json for debugging
SearchRequest searchRequest = new SearchRequest(indexName);// your index name
searchRequest.source(sourceBuilder);
SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
请注意,最后三行代码非常重要,代码中缺少这三行代码,它们用于通过查询创建搜索请求,并实际上使用ES客户端触发此搜索请求并获取结果。