如何在elasticsearch中使用java客户端发出原始查询?
我在上找到了一篇关于如何从ElasticSearch获取随机记录的帖子 我已将此文件存储为资源,并按如下方式加载它如何在elasticsearch中使用java客户端发出原始查询?,java,
elasticsearch,Java,
elasticsearch,我在上找到了一篇关于如何从ElasticSearch获取随机记录的帖子 我已将此文件存储为资源,并按如下方式加载它 String query = ResourceUtil.getResource("path/to/json/query"); SearchRequestBuilder srb = getSafeClient() .prepareSearch("myindex") .setTypes("mytype") .setQuery(query); _logger.de
String query = ResourceUtil.getResource("path/to/json/query");
SearchRequestBuilder srb = getSafeClient()
.prepareSearch("myindex")
.setTypes("mytype")
.setQuery(query);
_logger.debug("search = {}", srb.toString());
search = {,
"query":
"function_score": {
"query": {
"match_all": {}
},
"random_score": {}
}
}
QueryParsingException[[myindex] [_na] query malformed, must start with start_object
然而,我总是遇到解析失败。当我记录SearchRequestBuilder时,我注意到一个逗号的前缀如下所示
String query = ResourceUtil.getResource("path/to/json/query");
SearchRequestBuilder srb = getSafeClient()
.prepareSearch("myindex")
.setTypes("mytype")
.setQuery(query);
_logger.debug("search = {}", srb.toString());
search = {,
"query":
"function_score": {
"query": {
"match_all": {}
},
"random_score": {}
}
}
QueryParsingException[[myindex] [_na] query malformed, must start with start_object
我看到的QueryParsingException如下所示
String query = ResourceUtil.getResource("path/to/json/query");
SearchRequestBuilder srb = getSafeClient()
.prepareSearch("myindex")
.setTypes("mytype")
.setQuery(query);
_logger.debug("search = {}", srb.toString());
search = {,
"query":
"function_score": {
"query": {
"match_all": {}
},
"random_score": {}
}
}
QueryParsingException[[myindex] [_na] query malformed, must start with start_object
你知道我做错了什么吗?是否可以纯粹使用Java客户端API来表示随机查询?我正在使用ElasticSearch v1.1。不过,我修改并找到了如何以编程方式表达查询。如果有人感兴趣,代码片段如下
FunctionScoreQueryBuilder fsqb = new FunctionScoreQueryBuilder(QueryBuilders.matchAllQuery());
fsqb.add(ScoreFunctionBuilders.randomFunction((new Date()).getTime()));
SearchRequestBuilder srb = getSafeClient()
.prepareSearch("myindex")
.setTypes("mytype")
.setQuery(fsqb);