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

时间:2015-06-18 13:52:00

标签: c# mysql database elasticsearch nest

在我的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 

1 个答案:

答案 0 :(得分:2)

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

在原始索引调用中(假设您单独执行此操作 - 而不是通过_bulk端点),您可以从IIndexResponse的{​​Id {{{{{{ 1}}属性。