ElasticsearchStatusException содержит нераспознанный параметр: [ccs_minimize_roundtrips]]]
Я пытаюсь сделать простой поиск на сервере ElasticSearch и получаю следующую ошибку
ElasticsearchStatusException[Исключение Elasticsearch [type= нелегальное_argument_exception, причина = запрос [/recordlist1/_search] содержит нераспознанный параметр: [ccs_minimize_roundtrips]]]
Строка запроса: {"query":{"match_all":{"boost":1.0}}}
Я использую:asticsearch-rest-high-level-client (артефакт maven)
SearchRequest searchRequest = новый 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();
}
1 ответ
Обычно это происходит при портировании из версии с эластичным поиском 6.X.X
в 7.X.X
,
Вы должны уменьшить версию эластичного поиска до 6.7.1
и попробуйте запустить его.
Поскольку вы используете Maven, вы должны убедиться, что ваши зависимости должны быть такими:
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>6.7.1</version>
</dependency>
Возможно, вы можете найти это в stackTrace исключения:
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]
{"ошибка":{"корневая_причина":[{"тип": "недопустимый_аргумент_исключение", "причина": "запрос [/_search] содержит нераспознанные параметры: [ignore_throttled], [rest_total_hits_as_int]"}],"тип": " незаконный_аргумент_exception"," причина ":" запрос [/_search] содержит нераспознанные параметры: [ignore_throttled], [rest_total_hits_as_int]"},"status":400}
Итак, вы можете попробовать этот метод GET с помощью curl, который приведет к тому же сообщению об ошибке.
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=true... Дело закрыто.
Вы должны проверить версию своего es-сервера с помощью elasticsearch -V и версию клиента в maven.
В клиенте высокого уровня они по умолчанию добавляют rest_total_hits_as_int=true, и я не нашел доступа, чтобы установить для него значение false.
вы можете обратиться к
org.elasticsearch.client.RequestConverters#addSearchRequestParams Line:395 <v6.8.10>
У меня не было другого выбора, кроме как сопоставить клиент с сервером.
Почему это так захватывающе? эх... в конце концов, это "высокий уровень".
Я столкнулся с этой же проблемой, когда по ошибке мой кластер 6.5 все еще работал при использовании API 7.2. Как только я запустил свой кластер 7.2, исключение исчезло.
Проблема здесь в перемещении версии, возможно, вы использовали эластичный поиск 6.xx, а теперь используете 7.xx
Вы определенно можете решить эту проблему, установив свой эластичный поисковый сервер 7.xx
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.