Elasticsearch中word文本文件的存入与全文检索

 需要提前打开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  

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值