【发布时间】:2023-03-21 16:44:01
【问题描述】:
我正在寻找一个在弹性搜索中锁定文档的好例子。下面的链接解释了如何在 elasticsearch 中执行此操作。
http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/concurrency-solutions.html
我如何使用 NEST 来实现这一点。有人可以建议一种方法吗?
【问题讨论】:
标签: elasticsearch nest
我正在寻找一个在弹性搜索中锁定文档的好例子。下面的链接解释了如何在 elasticsearch 中执行此操作。
http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/concurrency-solutions.html
我如何使用 NEST 来实现这一点。有人可以建议一种方法吗?
【问题讨论】:
标签: elasticsearch nest
要开始,请阅读NEST Quick Start article。特别要注意以下几点:
NEST 是一个高级弹性搜索客户端,它仍然非常接近原始弹性搜索 API。请求和响应已映射到 CLR 对象,并且 NEST 还带有强大的强类型查询 dsl。
另外考虑一下,您可能不需要 NEST 提供的额外抽象级别,并且可能更喜欢直接使用 Elasticsearch.NET。另请阅读,它是自己的Quick Start article。
考虑到这一点,使用 NEST / Elasticsearch.NET 实现Solving concurrency issues article 中的步骤只是识别与必要的 Elasticsearch API 方法相对应的 .NET 方法。以第一个为例:
PUT /fs/lock/global/_create
{}
在 NEST 中看起来像:
var createGlobalLockResponse = esClient.Index<object>(new object(), f => f
.Index("fs")
.Type("lock")
.Id("global")
.OpType(global::Elasticsearch.Net.OpType.Create));
关于“此创建请求是否因冲突异常而失败”的检查,检查createGlobalLockResponse对象的属性。特别是Created,如果您打算更具体地处理,ServerError。
【讨论】: