gpt4 book ai didi

elasticsearch - 无法索引文件

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

我已经使用Elasticsearch.Net和NEST客户端库编写了一些代码,该代码应该为文档建立索引,而无需使用POCO映射字段,因为我有许多不同的文档。

问题1)这是创建索引的正确方法吗,.AddMapping<string>(mapping => mapping.Dynamic(true))是否基于传入的文档创建映射?

var newIndex = client.CreateIndex(indexName, index => index
.NumberOfReplicas(replicas)
.NumberOfShards(shards)
.Settings(settings => settings
.Add("merge.policy.merge_factor", "10")
.Add("search.slowlog.threshold.fetch.warn", "1s")
)
.AddMapping<string>(mapping => mapping.Dynamic(true))
);

问题2)有可能吗?

string document = "{\"name\": \"Mike\"}";
var newIndex = client.Index(document, indexSelector => indexSelector
.Index(indexName)
);

当我在“问题2”中运行代码时,它返回: {"Unable to perform request: 'POST ' on any of the nodes after retrying 0 times."}

最佳答案

NEST仅处理类型化的对象,在这种情况下,传递字符串将导致其将文档索引到/{indexName}/string/{id}中。

由于它无法从字符串中推断出一个ID,并且您不传递它,因此它将失败,或者因为它无法序列化字符串而失败。在这种情况下,我将更新客户端以引发更好的异常。

如果要将文档索引为字符串,请使用公开的Elasticsearch.NET客户端,如下所示:

client.Raw.Index(indexName, typeName, id, stringJson);

如果您希望Elasticsearch提供一个ID,则可以使用
client.Raw.Index(indexName, type, stringJson);
clientNEST客户端,而 Raw属性是具有相同connectionsettings的 Elasticsearch.Net客户端。

请注意,在下一个测试版更新中,我可能会使用 Raw重命名 LowLevel,但仍在争论。

关于elasticsearch - 无法索引文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23107760/

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