【问题标题】:ElasticSearch: Query for data immediately after writeElasticSearch:写入后立即查询数据
【发布时间】:2014-09-04 19:56:59
【问题描述】:

我有一个需求,就是在写入 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);
}

【问题讨论】:

    标签: c# elasticsearch nest elasticsearch-net


    【解决方案1】:

    是的。 GET API 是realtime,收到后会立即通过其_id 返回一个文档,即使索引还没有刷新。

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

    【讨论】:

    • 谢谢,使用“路径”是否与生成我自己的 id 不同,因为 _id 引用了我的一个唯一属性? .Net NEST 库中的 GET API 等价物是什么?
    • 对不起,我自己不知道 NEST 库,但我找到了这个文档:nest.azurewebsites.net/nest/core/get.html
    猜你喜欢
    • 2021-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-08
    • 2019-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多