问题描述
我正在尝试使用 ES nesT 客户端为我的文档编制索引,并希望它们具有索引文档的唯一 ID。为此,我使用管道处理器来从我的模型中删除 Id 字段。 但是,在 ES 端,Id 始终存储为 0。
我注意到我的索引请求正在使用 PUT http 方法请求,这可能表明为什么 Id 没有自动生成。 我的问题是如何将 nesT 客户端配置为使用 POST http 方法而不是 PUT?
解决方法
这是一个疯狂的猜测,但您可能希望全局(或针对特定类型)禁用 Id 推断https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/ids-inference.html#_disabling_id_inference
WithConnectionSettings(x => x
.DefaultMappingFor<MyOtherDTO>(m => m
.DisableIdInference()
)
).Expect(null).WhenInferringIdOn(dto);
WithConnectionSettings(x => x.DefaultDisableIdInference())
.Expect(null).WhenInferringIdOn(dto);