ES分词查询
在Elasticsearch中,分词查询通常是指对文本字段进行分词,并查找包含特定分词后的词的文档。这通常涉及到两种查询:match
查询和term
查询。
match
查询用于全文搜索,它会对查询的文本进行分析(分词),然后查找包含分析后的词的文档。
term
查询用于精确匹配,它不会对查询的文本进行分析,而是直接查找精确匹配的值。
以下是一个Elasticsearch DSL(Domain Specific Language)的查询示例,使用Elasticsearch的Python客户端:
from elasticsearch import Elasticsearch
# 连接到Elasticsearch
es = Elasticsearch("http://localhost:9200")
# 查询关键字
search_keyword = "example"
# 执行match查询
match_query = {
"query": {
"match": {
"content": search_keyword # 假设我们搜索的字段是"content"
}
}
}
# 执行term查询
term_query = {
"query": {
"term": {
"content.keyword": { # 对于不分析的字段,后缀.keyword用于精确匹配
"value": search_keyword
}
}
}
}
# 执行查询
match_response = es.search(index="my_index", body=match_query)
term_response = es.search(index="my_index", body=term_query)
# 输出结果
print("Match query result:", match_response)
print("Term query result:", term_response)
在这个例子中,我们使用了match
查询来搜索content
字段中包含"example"词的文档,使用term
查询来精确搜索content.keyword
字段中值为"example"的文档。记得根据实际情况调整索引名称my_index
和字段名称content
。
评论已关闭