gpt4 book ai didi

java - Elastic Search 7高级客户端使用映射创建索引

转载 作者:行者123 更新时间:2023-12-02 09:02:16 25 4
gpt4 key购买 nike

iam 使用 Elasticsearch 7.0。我有一个必须保存到弹性模型。

当索引不存在时,我尝试将文档直接保存到elastic:

final IndexRequest indexRequest = new IndexRequest("seminar_map", "seminar", id)
.source(new Gson().toJson(object), XContentType.JSON);
indexRequest.id(id);
final IndexResponse indexResponse = client.index(indexRequest, RequestOptions.DEFAULT);

一切正常,文档将保存到弹性文件中。

但我想要一个自定义分析器,并且需要更改映射类型。

所以我尝试在保存任何文档之前设置索引和映射:

try {
CreateIndexRequest request = new CreateIndexRequest(index);
request.settings(Settings.builder()
.loadFromSource(Strings.toString(jsonBuilder()
.startObject()
.startObject("analysis")
.startObject("analyzer")
.startObject("case_insensitive_analyzer")
.field("tokenizer", "keyword")
.field("type", "custom")
.field("filter", new String[]{"lowercase"})
.endObject()
.endObject()
.endObject()
.endObject()), XContentType.JSON)
);

XContentBuilder builder = XContentFactory.jsonBuilder();
builder.startObject();
{
builder.startObject("properties");
{
builder.startObject("seminar_nummer");
{
builder.field("analyzer", "case_insensitive_analyzer");
}
builder.endObject();
}
builder.endObject();
}
builder.endObject();
request.mapping("_doc",builder);

return client.indices().create(request, RequestOptions.DEFAULT);

但我收到错误:

Elasticsearch exception [type=illegal_argument_exception, reason=The mapping definition cannot be nested under a type [_doc] unless include_type_name is set to true.]

如何修复该错误?

创建一个索引和一个不包含所有参数的映射,然后使用比创建的更多参数保存文档的计划是否正确。那么弹性是否会将其他缺失的参数添加到映射中,或者我是否必须在创建索引部分中设置完整的映射?

最佳答案

该错误来自您正在创建的 JSON 中的 _doc,并且弹性提示它是因为 this

这里有两个选项:

  1. include_type_name=true 添加到网址

或者

  • 将此行 request.mapping("_doc",builder); 替换为 request.source(builder);
  • 有关更多详细信息,请参阅文档:

    1. https://www.elastic.co/guide/en/elasticsearch/reference/7.5/removal-of-types.html#_schedule_for_removal_of_mapping_types (注意6.8和7.X之间的区别)

    2. https://www.elastic.co/guide/en/elasticsearch/client/java-rest/master/java-rest-high-put-mapping.html#CO385-1

    关于java - Elastic Search 7高级客户端使用映射创建索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60076486/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com