MST

星途 面试题库

面试题:ElasticSearch中如何使用动态调整API实现部分数据的查询删除

假设在ElasticSearch中有一个索引名为 'products',包含字段 'product_name'、'price' 等。现在需要删除所有价格大于100且产品名称包含 'book' 的文档,请描述使用ElasticSearch查询删除的动态调整API来实现此需求的步骤及关键代码。
28.1万 热度难度
数据库ElasticSearch

知识考点

AI 面试

面试题答案

一键面试
  1. 步骤
    • 首先,构建一个查询语句来匹配价格大于100且产品名称包含'book'的文档。
    • 然后,使用Elasticsearch的删除API来删除这些匹配的文档。
  2. 关键代码(以Python的elasticsearch库为例)
from elasticsearch import Elasticsearch

# 连接Elasticsearch
es = Elasticsearch(['localhost:9200'])

# 构建查询体
query = {
    "query": {
        "bool": {
            "must": [
                {
                    "range": {
                        "price": {
                            "gt": 100
                        }
                    }
                },
                {
                    "match": {
                        "product_name": "book"
                    }
                }
            ]
        }
    }
}

# 执行删除操作
es.delete_by_query(index='products', body=query)

如果使用Kibana的Dev Tools,关键代码如下:

POST products/_delete_by_query
{
    "query": {
        "bool": {
            "must": [
                {
                    "range": {
                        "price": {
                            "gt": 100
                        }
                    }
                },
                {
                    "match": {
                        "product_name": "book"
                    }
                }
            ]
        }
    }
}