python借助elasticsearch实现精准查询与bm25查询
from datetime import datetime
from elasticsearch import Elasticsearch
from elasticsearch_dsl import Search, Q
# 初始化Elasticsearch客户端
es = Elasticsearch(hosts=["localhost:9200"])
# 定义搜索对象
search = Search(using=es, index="your_index_name")
# 执行精准查询
query = Q("match_phrase", content="your_query_term")
search.query(query)
results = search.execute()
for hit in results:
print(hit.meta.id, hit.content)
# 执行BM25查询
query = Q("multi_match", query="your_query_term", fields=["title", "content"], type="best_fields")
search.query(query)
results = search.execute()
for hit in results:
print(hit.meta.id, hit.title, hit.content)
这段代码使用了Elasticsearch的Python客户端库elasticsearch
和elasticsearch_dsl
来执行精准查询和BM25查询。首先,我们创建了一个Elasticsearch客户端并定义了一个搜索对象。然后,我们使用Q
对象来构建查询,并将其传递给搜索对象的query
方法。最后,我们执行搜索并打印返回的结果。这里的your_index_name
和your_query_term
需要替换为实际的索引名和查询词。
评论已关闭