Я пытаюсь создать новые индексы в Elasticsearch 7, используя Java API. Я могу создать новый индекс просто отлично, ожидаю, когда я пытаюсь либо создать его с помощью сопоставления, либо попытаться добавить сопоставление после факта в документах:
добавить сопоставление
создание индекса с отображением
это прекрасно работает, когда я просто создаю индекс
public boolean createIndex(RestHighLevelClient client, String indexName) throws IOException {
CreateIndexRequest request = new CreateIndexRequest(indexName);
//no options just straight forward
CreateIndexResponse response = client.indices().create(request, RequestOptions.DEFAULT);
return response.isAcknowledged();
}
однако, добавление request.mapping (этот пример с веб-страницы) нарушает его?
request.mapping(
"{\n" +
" \"properties\": {\n" +
" \"firstName\": {\n" +
" \"type\": \"text\"\n" +
" }\n" +
" }\n" +
"}",
XContentType.JSON);
даже если я попытаюсь применить отображение с помощью putMapping после того, как оно также нарушит его
public boolean createMappingOnIndex(RestHighLevelClient client, String indexName, String mapping) throws IOException {
PutMappingRequest request = new PutMappingRequest(indexName);
//instead of using my own, using the example from docs to simplify, still not working
request.source(
"{\n" +
" \"properties\": {\n" +
" \"firstName\": {\n" +
" \"type\": \"text\"\n" +
" }\n" +
" }\n" +
"}",
XContentType.JSON);
AcknowledgedResponse response = client.indices(). putMapping(request, RequestOptions.DEFAULT);
return response.isAcknowledged();
}
ошибок я получаю
java.lang.IllegalStateException: Failed to close the XContentBuilder
at org.elasticsearch.common.xcontent.XContentBuilder.close
caused by: java.io.IOException: Unclosed Object or array found
at org.elasticsearch.common.xcontent.json.JsonXContentGenerator.close(JsonXContentGenerator.java ###)
Я попытался использовать реализацию Hashmap вместо строковой версии, хотя, как только он попадает в байты es, кажется, это одно и то же. Это странно, потому что, использую ли я что-то вроде Gson, или просто пишу экранированный пример строки, или нет, объект запроса выполняет преобразование, в котором он нуждается, внутренне (я думаю), а затем вastic возникает проблема с форматом, который он создал?
Я должен упомянуть, что все это в контексте Spring Maven, и создание / вставка индексов / документов выполняется из единственного компонента. Хотя я не могу найти никаких признаков того, что здесь виновник? Он отлично работает, когда я просто создаю индекс без привязанного отображения.
Любая помощь, как всегда, ценится.