gpt4 book ai didi

c# - 批量搜索文档 Elasticsearch

转载 作者:行者123 更新时间:2023-12-03 01:28:55 29 4
gpt4 key购买 nike

我正在使用此无希望的低效率代码来确定文档是否已被索引:

foreach (var entry in dic)
{
var response = client.Search<Document>(s => s.Query(q => q.QueryString(d =>
d.Query(string.Format("{0}", entry.Key)))));

if (response.Documents.Count == 0)
{
not_found++;
}
else
{
found++;
}
}

我想知道,是否可以批量发送多个entry.Key而不是为每个id(entry.Key)击中端点?谢谢。

最佳答案

当然!

您可以使用 terms 过滤器:

client.Search<Document>(s => s.Query(
q => q.Terms(
c => c
.Field(doc => doc.Id)
.Terms(keys)))

如果您要专门查找ID,则可以使用 ids 过滤器:

client.Search<Document>(s => s.Query(
q => q.Ids(c => c.Values(keys))
);

如果您仅对是否已为文档建立索引感兴趣,请考虑将 limiting the returned fields仅用于ID字段,这样就不会浪费带宽返回完整文档:

response = client.Search<Document>(s => s
.Query(q => q.Ids(c => c.Values(keys)) // look for these IDs
.StoredFields(sf => sf.Fields(doc => doc.Id)) // return only the Id field
);

最后,如果您只对匹配文档的 数字感兴趣,则可以要求Elasticsearch不返回任何结果,而仅使用响应元数据来计算匹配的文档数:

response = client.Search<Document>(s => s
.Query(q => q.Ids(c => c.Values(keys))) // look for these IDs
.Size(0) // return 0 hits
);
found += response.Total; // number of total hits

关于c# - 批量搜索文档 Elasticsearch ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57026589/

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