Создание типа внутри индекса в упругом поиске через остальных клиентов высокого уровня
Я использую упругий поиск клиента высокого уровня в моем приложении JAVA. Документ можно найти здесь. В моем приложении при запуске я удаляю индекс с именем "posts", в котором хранятся данные Elasticsearch, и снова создаю Index "posts" по этой ссылке
CreateIndexRequest request = new CreateIndexRequest("posts");
Но внутри индекса мне нужно создать один тип с именем "DOC". Который не упоминается на сайте. Временное исправление - когда я публикую некоторые данные по этой ссылке, это создает тип
Map<String, Object> jsonMap = new HashMap<>();
jsonMap.put("user", "kimchy");
jsonMap.put("postDate", new Date());
jsonMap.put("message", "trying out Elasticsearch");
IndexRequest indexRequest = new IndexRequest("posts", "doc", "1")
.source(jsonMap);
Но в этом процессе, когда я пишу только тогда, я могу создать тип "doc". Если я не публикую и пытаюсь нажать на контроллер, который вызывает данные frmo index "posts" и набирает "doc". Выдает ошибку, так как типа "doc" там нет.
Кто-нибудь есть какие-либо идеи, как создать тип, используя отдых высокого уровня клиента ES в Java
3 ответа
Под типом вы подразумеваете тип документа?
А как насчет второго раздела Отображения индексов в предоставленной вами ссылке? Это не работает для вас?
Если вы знаете, как вставлять документы через API, то вам будет намного проще делать что-либо подобное API (DELETE,POST,PUT...). Во-первых, вам понадобится RestHighLevelClient и все, что вам нужно сделать.
String index = "/indexName/_doc"; <- Your path or type here
Request request = new Request("POST", index); <- Your method
request.setJsonEntity(
"{ \"message\": \" example add insert\" }" <- Your request body
);
client.getLowLevelClient().performRequest(request);
Это будет выполняться так же, как это делает API.
Мне нужно было установить тип "_doc", чтобы он работал с ES7.6.