Cat*_*ina 6 java query-builder elasticsearch spring-boot spring-data-elasticsearch
我在 Elasticsearch 中有以下保存的 json 数据:
{
"id":"1234",
"expirationDate":"17343234234",
"paths":"http:localhost:9090",
"work":"software dev",
"family":{
"baba":"jams",
"mother":"ela"
}
},
{
"id":"00021",
"expirationDate":"0123234",
"paths":"http:localhost:8080",
"work":"software engi",
"family":{
"baba":"stev",
"mother":"hela"
}
}
Run Code Online (Sandbox Code Playgroud)
我想在springdata Elasticsearch 中使用 QueryBuilder删除其到期日期小于今天的所有ID列表
好吧,按查询删除是要走的路。
POST /{your_index_name}/_delete_by_query
{
"query": {
"range": {
"expirationDate": {
"lt": "{your_timestamp}"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
将Java客户端文件表示你可以建立一个要求是这样的:
BulkByScrollResponse response =
new DeleteByQueryRequestBuilder(client, DeleteByQueryAction.INSTANCE)
.filter(QueryBuilders.matchQuery("gender", "male"))
.source("persons")
.get();
long deleted = response.getDeleted();
Run Code Online (Sandbox Code Playgroud)
这被标记为Spring-data-elasticsearch 自版本 3.2 支持。
例如,您可以使用查询派生:
除了查询方法,计数和删除查询的查询派生也是可用的。
在附录 C 中,您可以看到这IsLessThan是一个查询派生关键字,这意味着应该立即支持以下内容:
interface YourRepository extends CrudRepository<User, Long> {
long deleteByExpirationDateIsLessThan(long timestamp);
}
Run Code Online (Sandbox Code Playgroud)
通过使用查询派生,您可以让 spring 执行实现(手指交叉表示它将做“正确的事情”)。
但是您也可以使用 a ElasticsearchRestTemplate#delete(如果您使用的是较旧的ElasticsearchTemplate,则效果相同)。
这允许您传入任何弹簧数据查询(本机、字符串或条件)。
| 归档时间: |
|
| 查看次数: |
598 次 |
| 最近记录: |