对弹性搜索结果的并发请求 null

如何解决对弹性搜索结果的并发请求 null

我正在尝试使用 C# nest 更新弹性搜索中的文档。我有 Azure 服务总线触发器功能,它提供要更新的数据。以下是我正在执行的更新文档的步骤。

  1. 通过 ID 从 Elastic Search 索引中获取记录
  2. 进行更改
  3. 通过 ID 更新记录

如果我使用单个消息进行测试,则逻辑运行良好。在并发请求的情况下,弹性搜索正在重新调整空响应。

以下是 servicebus 消息和 nest 逻辑的详细信息。

留言:

待更新的ID数据 12345678 XXXXXXXXXXXXXXXX

业务逻辑:

public async Task Update(string message)
        {
            var obj = JsonConvert.DeserializeObject<Model>(topicmessage.Record);

            SearchResponse searchResponse = null;

            var esResult = await _elasticclient.GetAsync<SearchResponse>(obj.Id);
            searchResponse = esResult?.source;

            if (searchResponse != null)
            {
                // Update logic which is working fine
            }
            else
            {
                throw new Exception($"Record with id:{obj.Id} not found in ES");
            }
        }

如果我一次处理 10000 条记录,那么大约有 500 到 1000 条记录返回 null(即使是带有 Id 的记录也存在于 ES 索引中)。

我需要一些帮助来快速处理并发请求并减少故障。

注意:在任何消息中,Id 不为 null 或为空。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?