一段 Python 连接 elasticsearch 的代码

本文详细介绍了如何使用pip安装elasticsearch,并通过es_client.py文件展示了一个实例,展示了如何利用elasticsearch进行搜索操作。

安装

pip install elasticsearch

 

 

es_client.py

# -*- coding: utf-8 -*-
import random
import requests
from elasticsearch import Transport
from elasticsearch.connection import RequestsHttpConnection
from config.base_config import ES_HOSTS, ES_INDEX, ES_CONNECTION_NUM

hosts = []
for host in ES_HOSTS:
    hosts.append({'url': host})

connection_pool = Transport(hosts, connection_class=RequestsHttpConnection).connection_pool

def get_es_conn():
    return connection_pool.get_connection()

def search(query):
    con = get_es_conn()
    status, headers, data = con.perform_request('GET', '/'+ES_INDEX+'/_search?q='+query)
    return data

 

调用

import json
from es_client import search

query_str = "((title:*"+keyword+"*)OR(key_words:*"+keyword+"*))AND(is_public:true)AND(publish_time:[0 TO "+str(int(time.time()))+"])"
query_str += "&size=" + str(page_size)
query_str += "&from=" + str((page - 1) * page_size)        
res = json.loads(search(query_str))

 

 

### Python连接Elasticsearch示例代码及教程 #### 安装依赖 为了能够顺利操作Elasticsearch,需先通过pip工具安装`elasticsearch`包。这一步骤确保了后续程序能调用必要的API来管理索引以及执行各种命令。 ```bash pip install elasticsearch ``` 此命令会下载并安装最新版本的`elasticsearch-py`库[^1]。 #### 创建Elasticsearch客户端实例 建立与Elasticsearch集群之间的通信链路是至关重要的第一步。下面展示了如何初始化一个简单的客户端对象: ```python from elasticsearch import Elasticsearch es_client = Elasticsearch( "http://localhost:9200", # 替换为实际地址 request_timeout=30 # 设置请求超时时间 ) if not es_client.ping(): raise ValueError("Connection failed") print('Connected to ES!') ``` 上述脚本尝试连接至本地运行的Elasticsearch服务,并验证连通性;如果成功,则打印确认消息[^2]。 #### 删除已有索引 有时需要清理旧数据以便于重新构建新的结构化存储空间。这里提供了一种方法用于移除指定名称的索引: ```python index_name = 'test_index' if es_client.indices.exists(index=index_name): response = es_client.indices.delete(index=index_name) print(f"Index '{index_name}' deleted successfully.") else: print(f"Index '{index_name}' does not exist.") ``` 这段代码首先检查目标索引是否存在,存在则予以删除,并给出相应的反馈信息。 #### 新建索引配置映射关系 定义好文档类型的字段及其属性对于优化检索性能至关重要。接下来展示的是创建新索引的同时设置其内部结构的方式: ```python settings_and_mappings = { "settings": { "number_of_shards": 1, "number_of_replicas": 0 }, "mappings": { "properties": { "title": {"type": "text"}, "content": {"type": "text"} } } } response = es_client.indices.create( index=index_name, body=settings_and_mappings) print(response.get('acknowledged', False)) ``` 此处设定了单一分片无副本模式下的两个文本型字段作为例子说明。 #### 测试中文分词功能 最后介绍一种简单的方式来检验所使用的分析器能否正确处理特定语言的文字串。假设已经加载了一个适合汉语环境的插件,那么可以通过如下方式来进行初步测试: ```python text_to_analyze = "这是一个测试字符串" analysis_result = es_client.indices.analyze( index=index_name, body={ "analyzer": "ik_max_word", "text": text_to_analyze }) tokens = [token['token'] for token in analysis_result['tokens']] print(tokens) ``` 以上过程利用内置或自定义好的IK Analyzer实现了对给定语句的有效分割。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值