我要求写入ES之后能够立即通过密钥读取数据。这可能吗?请注意,DataMap是键值对,并且_id路径到键字段。

string v = "Foobar" + i;
string k = Security.Hash(Encoding.UTF8.GetBytes(v));

var data = new DataMap { Key = k, Value = v };
var index = _esclient.Index(data);

// fetch by k
var results = _esclient.Search<DataMap>(p => p
        .Size(1000)
        .Fields(f => f.Key, f => f.Value)
        .Query(q => q.Term("key", k))
        );

// Make sure the record is found
if (!results.Hits.Any())
{
    Console.WriteLine("{0} {1} not found", k, v);
}

最佳答案

是。 GET API为realtime,即使尚未刷新索引,接收到的文档也会立即通过其_id返回文档。

请注意,将唯一的_id提供给Elasticsearch可能更简单,而不是让它为您生成一个。否则,您将必须从索引操作中读取响应以了解文档的_id

07-26 01:17