通过REST高级客户端在ElasticSearch中创建索引中的类型

xeufq47z  于 2022-10-06  发布在  ElasticSearch
关注(0)|答案(3)|浏览(220)

我在Java应用程序中使用REST高级客户端ElasticSearch。文档可以在here中找到。在我的应用程序启动时,我删除了存储Elasticearch数据的名为“POSTS”的索引,并在此link之后再次创建了索引“POSTS

CreateIndexRequest request = new CreateIndexRequest("posts");

但是,在索引中,我需要创建一个名为“doc”的类型。这在网站上是没有提到的。临时修复是当我在link之后发布一些数据时,它正在创建类型

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);

但是,在这个过程中,当我发帖时,我才能创建类型“文档”。如果我没有张贴和尝试点击控制器,它称为数据frmo索引“POST”,并键入“DOC”。它会给出错误,因为不存在“文档”类型。

任何人都知道如何在Java中使用REST高级客户端ES创建类型

nc1teljy

nc1teljy1#

您说的类型是指单据类型吗?

那么您提供的链接中的第二部分Index Mappings呢?这对你不起作用吗?

mrphzbgm

mrphzbgm2#

我需要将类型设置为“_doc”以使其与ES7.6一起工作

myss37ts

myss37ts3#

如果您知道如何通过API插入文档,那么这种方式将使您更容易执行任何类似的API操作(删除、发布、放置...)首先,您将需要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一样执行。

相关问题