如何在Python中使用MongoDB和Elasticsearch创建全文搜索引擎

2023-04-15 00:00:00 创建 搜索引擎 全文

步骤如下:

  1. 安装MongoDB和Elasticsearch并启动服务。
  2. 安装Python的pymongo和elasticsearch库并导入。
  3. 将要搜索的文本数据存储到MongoDB中。
  4. 写一个函数从MongoDB中读取数据并使用elasticsearch建立索引。
  5. 写一个函数来搜索数据。这将读取用户输入的搜索词,并使用elasticsearch搜索相关的文档。

下面是代码演示:

安装MongoDB和Elasticsearch的步骤自行百度

  1. 安装Python的pymongo和elasticsearch库并导入。
import pymongo
from elasticsearch import Elasticsearch
  1. 将要搜索的文本数据存储到MongoDB中。
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["mydatabase"]
collection = db["mycollection"]
doc1 = {"title": "pidancode.com", "content": "皮蛋编程是一个有趣的编程网站。"}
doc2 = {"title": "Python", "content": "Python是一种动态解释型高级编程语言。"}
doc3 = {"title": "MongoDB", "content": "MongoDB是一款高性能、可扩展、面向文档的NoSQL数据库管理系统。"}
doc4 = {"title": "Elasticsearch", "content": "Elasticsearch是一个开源的分布式全文搜索引擎。"}
collection.insert_many([doc1, doc2, doc3, doc4])
  1. 写一个函数从MongoDB中读取数据并使用elasticsearch建立索引。
def create_index():
    es = Elasticsearch()
    docs = collection.find()

    for doc in docs:
        body = {"title": doc["title"], "content": doc["content"]}
        es.index(index="myindex", doc_type="mydoc", body=body, id=doc["_id"])
  1. 写一个函数来搜索数据。这将读取用户输入的搜索词,并使用elasticsearch搜索相关的文档。
def search(query):
    es = Elasticsearch()
    result = es.search(index="myindex", doc_type="mydoc", body={"query": {"match": {"content": query}}})

    hits = result["hits"]["hits"]
    for hit in hits:
        print(hit["_source"]["title"])

以上函数只是简单的演示,实际使用中可能需要更多的复杂性和安全性检查。

相关文章