gpt4 book ai didi

c# - 从特定类型删除旧的Elasticsearch日志

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

我正在使用Elasticsearch存储来自多个系统的日志。
我通过为每个系统日志使用不同的_type名称将日志与不同的系统分开。
我正在尝试编写旧日志删除程序,它将删除早于某个日期的日志...
当我使用Nest执行此操作时,似乎删除了所有类型,而不仅是我指定的类型。

var client = new ElasticClient(new ConnectionSettings(new Uri("http://localhost:9200"),"someindex");
client.deleteByQuery(new DeleteByQueryRequest
{
AllIndices = true,
AllType = true,
Q = "_type:someType",
Query = new QueryContainer(new RangeQuery
{
Field = new PropertyPathMarker
{
Name = "@timestamp"
},
LowerThan = dateToSaveFrom.ToString("O")
})
}

我尝试了许多不同的变化很多次,但效果并不理想。我究竟做错了什么?

最佳答案

此处QQuery是互斥的,并且Query优先。

由于您要显式设置AllTypes = true,并同时指定QQuery,因此Q被忽略,并且RangeQuery在所有类型上都运行。

相反,只需删除Q并使用Types仅指定要删除的类型。

new DeleteByQueryRequest
{
AllIndices = true,
Types = new TypeNameMarker [] { "someType" },
Query = new QueryContainer(new RangeQuery
{
Field = new PropertyPathMarker
{
Name = "@timestamp"
},
LowerThan = dateToSaveFrom.ToString("O")
})
}

关于c# - 从特定类型删除旧的Elasticsearch日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28854576/

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