gpt4 book ai didi

elasticsearch - 嵌套没有对象名称的 DeleteByQuery

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

我想在不指定我没有的对象的情况下向 elasticsearch 发送 Nest 删除请求。我见过这样的解决方案:

var response = elasticClient.DeleteByQuery<MyClass>(q => q                
.Match(m => m.OnField(f => f.Guid).Equals(someObject.Guid))
);

发件人: DeleteByQuery using NEST and ElasticSearch

由于我只是从队列中读取纯文本,因此我无权访问 MyClass 对象以用于删除请求。基本上,我只想删除变量匹配的索引(我知道其名称)中的所有文档,例如 ordId = 1234。类似于:
    var response = client.DeleteByQuery<string>( q => q
.Index(indexName)
.AllTypes()
.Routing(route)
.Query(rq => rq
.Term("orgId", "1234"))
);

我看到嵌套 IElasticClient 接口(interface)确实有一个 DeleteByQuery 方法,它不需要映射对象,但不确定如何实现它。

最佳答案

您可以指定 object作为文档类型T对于 DeleteByQuery<T> - 在这种情况下,请务必明确提供要定位的索引名称和类型名称。 T仅用于在请求正文中提供强类型访问。例如,

var client = new ElasticClient();

var deleteByQueryResponse = client.DeleteByQuery<object>(d => d
.Index("index-name")
.Type("type-name")
.Query(q => q
.Term("orgId", "1234")
)
);

将生成以下查询
POST http://localhost:9200/index-name/type-name/_delete_by_query
{
"query": {
"term": {
"orgId": {
"value": "1234"
}
}
}
}

替换 _delete_by_query_search首先在 URI 中,以确保您针对的是预期的文档:)

关于elasticsearch - 嵌套没有对象名称的 DeleteByQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51716157/

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