C# 从特定类型中删除旧elasticsearch日志
我正在使用elasticsearch存储来自多个系统的日志。 我通过为每个系统日志使用不同的_类型名称来分离不同系统中的日志。 我正在尝试编写一个旧日志删除程序,它将删除超过某个日期的日志。。。 当我使用Nest执行此操作时,似乎删除了所有类型,而不仅仅是我指定的类型C# 从特定类型中删除旧elasticsearch日志,c#,
elasticsearch,logstash,nest,C#,
elasticsearch,Logstash,Nest,我正在使用elasticsearch存储来自多个系统的日志。 我通过为每个系统日志使用不同的_类型名称来分离不同系统中的日志。 我正在尝试编写一个旧日志删除程序,它将删除超过某个日期的日志。。。 当我使用Nest执行此操作时,似乎删除了所有类型,而不仅仅是我指定的类型 var client = new ElasticClient(new ConnectionSettings(new Uri("http://localhost:9200"),"someindex"); client.deleteB
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")
})
}
我尝试了很多次不同的变化,但都没有达到预期效果。我做错了什么?您可以直接使用curl进行操作,如下所示
curl -XDELETE 'http://localhost:9200/index/type/_query' -d '{
"match_all" : {}
}'
在这里,通过指向索引和类型,您可以删除该类型。
Q
和Query
在这里是互斥的,并且Query
优先
由于您显式设置了AllTypes=true
,并同时指定了Q
和Query
,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")
})
}