ElasticsearchStatusException 包含无法识别的参数:[ccs_minimize_roundtr



我正在尝试在ElasticSearch服务器上进行简单的搜索并收到以下错误

ElasticsearchStatusException[Elasticsearch exception [type=illegal_argument_exception, reason=request [/recordlist1/_search] contains unrecognized parameter: [ccs_minimize_roundtrips]]]

查询字符串:{"query":{"match_all":{"boost":1.0}}}

我正在使用: Elasticsearch-rest-high-level-client (Maven Artifact)

SearchRequest searchRequest = new SearchRequest(INDEX);

SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(QueryBuilders.matchAllQuery());
searchRequest.source(searchSourceBuilder);

try 
{


System.out.print(searchRequest.source());
SearchResponse response = getConnection().search(searchRequest,RequestOptions.DEFAULT);
SearchHit[]  results=response.getHits().getHits();
for(SearchHit hit : results)
{
String sourceAsString = hit.getSourceAsString();
System.out.println( gson.fromJson(sourceAsString, Record.class).year);
}

} 
catch(ElasticsearchException e) 
{
e.getDetailedMessage();
e.printStackTrace();
} 
catch (java.io.IOException ex)
{
ex.getLocalizedMessage();
ex.printStackTrace();
}

这通常发生在从弹性搜索版本6.X.X移植到7.X.X时。

您应该将弹性搜索版本减少到6.7.1并尝试运行它。

由于您使用的是 maven,因此您应该确保您的依赖项应如下所示:

<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>6.7.1</version>
</dependency>

当我在使用 6.5 API 时错误地将我的 7.2 集群仍在运行时,我遇到了同样的问题。 启动 7.2 集群后,异常消失了。

这里的问题是版本的移动,可能您使用的是弹性搜索 6.x.x,现在使用的是 7.x.x

您绝对可以通过拥有 7.x.x 的弹性搜索服务器来解决此问题。

Elasticsearch 6.x.x used to have type of document 
(where you could give type to your documents)

but Elasticsearch 7.x.x onwards it has no type or 
default type _doc, so you need to have _doc as your type 
while creating mapping.

也许你可以从 stackTrace of exception 中找到这个:

Suppressed: org.elasticsearch.client.ResponseException: method [POST], host [http://127.0.0.1:9200], URI [/recordlist1/_search?rest_total_hits_as_int=true&typed_keys=true&ignore_unavailable=false&expand_wildcards=open%2Cclosed&allow_no_indices=true&ignore_throttled=false&search_type=query_then_fetch&batched_reduce_size=512], status line [HTTP/1.1 400 Bad Request]
{">

error":{"root_cause":[{"type":"illegal_argument_exception","reason":"request [/_search] 包含无法识别的参数:[ignore_throttled], [rest_total_hits_as_int]"}],"type":"illegal_argument_exception","reason":"request [/_search] 包含无法识别的参数:[ignore_throttled], [rest_total_hits_as_int]"},"状态":400}

因此,您可以通过curl尝试此GET方法,该方法会出现相同的错误消息。

curl -XGET http://127.0.0.1:9200/recordlist1/_search?rest_total_hits_as_int=true&typed_keys=true&ignore_unavailable=false&expand_wildcards=open%2Cclosed&allow_no_indices=true&ignore_throttled=false&search_type=query_then_fetch&batched_reduce_size=512

我试过删除"rest_total_hits_as_int=真"...案件已结案。

您应该通过 elasticsearch -V 检查您的 es-server 版本,并在 maven 中检查客户端的版本。

在高级客户端中,他们默认添加 rest_total_hits_as_int=true,我发现无法访问将其设置为 false。

您可以参考

org.elasticsearch.client.RequestConverters#addSearchRequestParams Line:395 <v6.8.10> 

我别无选择,只能匹配客户端以匹配服务器。

为什么如此令人兴奋? 恩......毕竟,它是"高级"。

相关内容

  • 没有找到相关文章

最新更新