ElasticSearch - 如何从插入查询中获取自动生成的 ID

ElasticSearch - how to get the auto generated id from an insert query

在我的 ElasticSearch 数据库上,我需要从我的插入查询中获取自动生成的 ID(我使用的是 .NET C#)。怎么做?我尝试调试 readRecords 响应,但没有找到这样的 ID。

基本上我需要 MySQL LAST_INSERT_ID() 命令的等价物。

var readRecords = elasticClient.Search<HistoryRecord>(s => s
                .Index(elasticIndexName)
                .Filter(f =>
                    f.Term(t => t.MacAddr, historyRecord.MacAddr) &&
                    f.Term(t => t.GroupName, historyRecord.GroupName) &&
                    f.Term(t => t.GroupNo, historyRecord.GroupNo) &&
                    f.Term(t => t.InstrType, historyRecord.InstrType) &&
                    f.Term(t => t.InstrumentAddress, historyRecord.InstrumentAddress) &&
                    f.Term(t => t.InstrumentName, historyRecord.InstrumentName) &&
                    f.Term(t => t.UhhVersion, historyRecord.UhhVersion))).Documents 

您可以通过查看 Hits 集合中的对象而不是 Documents 集合中的对象,从 ISearchResponse(基于上面的代码示例)中找到 id 值。每个 Hit 都有一个 Id 属性.

在原始索引调用中(假设您是单独执行的——而不是通过 _bulk 端点),您可以从 IIndexResponse 中获取新索引文档的 ID Id 属性.