gpt4 book ai didi

elasticsearch - Elasticsearch ,从头开始无法正常工作

转载 作者:行者123 更新时间:2023-12-02 23:19:19 25 4
gpt4 key购买 nike

我将使用Elastic Search查询在两个日期之间获取一些记录。

首先,我检查两个日期之间的记录数,以了解它是否大于10000。如果是的话,我尝试通过10000获取它们10000。

    //get count
var result_count = client.Count<TelegramMessageStructure>(s => s
.AllTypes()
.AllIndices()
.Query(q => q
.DateRange(r => r
.Field(f => f.messageDate)
.GreaterThanOrEquals("2018-06-03 00:00:00.000")
.LessThan("2018-06-03 00:59:00.000")
)
)
);
long count = result_count.Count; //count = 27000

它返回27000。所以我想通过10000来获取它们10000。我使用此查询来做到这一点:
    int MaxMessageCountPerQuery=10000;

for (int i = 0; i < count; i += MaxMessageCountPerQuery)
{
client = new ElasticClient(connectionSettings);
// No change whether the client is renewed or not
var result = client.Search<TelegramMessageStructure>(s => s
.AllTypes()
.AllIndices()
.MatchAll()
.From(i)
.Size(MaxMessageCountPerQuery)
.Sort(ss => ss.Ascending(p => p.id))
.Query(q => q
.DateRange(r => r
.Field(f => f.messageDate)
.GreaterThanOrEquals("2018-06-03 00:00:00.000")
.LessThan("2018-06-03 00:59:00.000")
)
)
);
//when i=0, result.documents contains 10000 records otherwise it has 0

}

在第一轮中,当i = 0时, result.documents包含10000条记录,否则它包含0条记录。

这有什么问题?

最佳答案

基于此链接:
scroll in elastic net-api

您的代码应包含以下步骤:

1-搜索所有需要的参数,然后加上 .Scroll(“5m”)(我假设也设置了from(0)和size(10000)并将响应保存在结果变量中)

2-现在您有前10000条记录(结果是文档)

3-要接收更多记录,应使用 ScrollId 参数来获取更多结果。 (每次调用下面的代码都会给您下一个10000条记录)

var result_new = client.Scroll<TelegramMessageStructure>("10m", result.ScrollId);

实际上,您的代码应如下所示:
        int MaxMessageCountPerQuery=10000;

client = new ElasticClient(connectionSettings);
// No change whether the client is renewed or not
var result = client.Search<TelegramMessageStructure>(s => s
.AllTypes()
.AllIndices()
.MatchAll()
.From(i)
.Size(MaxMessageCountPerQuery)
.Sort(ss => ss.Ascending(p => p.id))
.Query(q => q
.DateRange(r => r
.Field(f => f.messageDate)
.GreaterThanOrEquals("2018-06-03 00:00:00.000")
.LessThan("2018-06-03 00:59:00.000")
)
)
.Scroll("5m") // Add this parameter
);

// TODO some code:
// save and use result.Documents

for (int i = 0; i < result.Total; i += MaxMessageCountPerQuery)
{
var result_new = client.Scroll<TelegramMessageStructure>("10m", result.ScrollId); // Add this line to loop , Each loop you can get next 10000 record.
// TODO some code:
// save and use result_new.Documents
}

关于elasticsearch - Elasticsearch ,从头开始无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51399753/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com