MST

星途 面试题库

面试题:ElasticSearch中如何通过API实现基础的模糊查询控制

在ElasticSearch中,假设你有一个包含产品描述的索引,现在需要实现一个模糊查询功能,找出描述中近似包含特定关键词的产品。请说明使用什么API以及如何设置相关参数来控制模糊性,并且给出简单的示例代码。
29.1万 热度难度
数据库ElasticSearch

知识考点

AI 面试

面试题答案

一键面试

使用的API及参数设置

在Elasticsearch中,可以使用 match 查询结合 fuzziness 参数来实现模糊查询。fuzziness 参数用于控制模糊性,它可以接受以下值:

  • 0:精确匹配,不允许模糊。
  • 1:允许一个字符的编辑距离(例如替换、插入或删除一个字符)。
  • 2:允许两个字符的编辑距离。
  • "AUTO":自动根据词的长度计算模糊度,对于长度小于等于2的词,不允许模糊;长度在3到5之间的词,允许1个编辑距离;长度大于5的词,允许2个编辑距离。
  • "AUTO:n,m":自定义自动计算规则,n 是最小长度,m 是最大编辑距离。

示例代码

假设索引名为 products,文档结构包含 description 字段,以下是使用Python的 elasticsearch 库进行模糊查询的示例代码:

from elasticsearch import Elasticsearch

# 连接到Elasticsearch
es = Elasticsearch([{'host': 'localhost', 'port': 9200}])

# 模糊查询
query = {
    "query": {
        "match": {
            "description": {
                "query": "特定关键词",
                "fuzziness": "AUTO"
            }
        }
    }
}

# 执行查询
response = es.search(index='products', body=query)

# 打印结果
for hit in response['hits']['hits']:
    print(hit['_source'])

如果使用REST API,请求如下:

POST /products/_search
{
    "query": {
        "match": {
            "description": {
                "query": "特定关键词",
                "fuzziness": "AUTO"
            }
        }
    }
}