需要提前打开elasticsearch,在所下载elasticsearch文件夹的bin里的window运行程序
from docx import Document
from elasticsearch import Elasticsearch
import os
import re
#######读取文本文档
def read_word_file(file_path):
doc = Document(file_path)
full_text = []
for para in doc.paragraphs:
full_text.append(para.text)
return '\n'.join(full_text)
def connect_to_elasticsearch(hosts):
es = Elasticsearch(hosts=hosts)
return es
def index_word_content(es, index_name, document_id, content, name):
doc = {
'content': content,
'name': name,
}
# 可以添加其他字段,比如标题、作者、创建日期等
response = es.index(index=index_name, id=document_id, body=doc)
return response
def main(word_file_path, es_hosts, index_name, document_id):
# 读取Word文件内容
content = read_word_file(word_file_path)
# 连接到Elasticsearch
es = connect_to_elasticsearch(es_hosts)
# 确保索引存在,如果不存在则创建它
if not es.indices.exists(index=index_name):
es.indices.create(index=index_name)
# 将内容索引到Elasticsearch
response = index_word_content(es, index_name, document_id, content, name)
print(response)
##########执行函数存入Elasticsearch
word_file_path = 'D:\\lawText\\法规文本0324\\9804山东省水利工程建设质量与安全生产监督检查办法(试行)-2019.docx'
es_hosts = ['http://localhost:9200'] # 根据你的Elasticsearch配置进行调整
index_name = 'word_documents' # 你希望内容被索引到的索引名
document_id = '9804' # 为这份文档选择的唯一ID
name='9804山东省水利工程建设质量与安全生产监督检查办法(试行)-20196'
# 执行主函数
main(word_file_path, es_hosts, index_name, document_id)
##########检索索引为word_documents的全部
body={
"query" : {
"match_all" : {}
}
}
es.search(index="word_documents", body=body)
搜索全文
根据content字段相关性搜索
##########按照content内容的相关性搜索,size": 可以设置出现的文档数量
body={
"size": 1,
"query" : {
"match" : {
"content" : "机关、团体、企业、事业等单位,应当加强对本单位人员的消防宣传教育。"
}
}
}
result=es.search(index="word_documents", body=body)
##########获取里面字段信息
_id = result['hits']['hits'][0]['_id']
_id
name= result['hits']['hits'][0]["_source"]['name']
name