面试题答案
一键面试使用的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"
}
}
}
}