elasticsearch之python案例

【Python】Python 操作 elasticsearch 版本兼容问题导致报错的解决方案 由于 python elasticsearch 插件升级导致历史功能代码报错,记录一下问题的定位过程和解决方案 阅读详情

config为ES环境配置

#elasticsearch环境配置
ES_HOST = "IP"
ES_PORT = 9200
  1. 新增记录bulk
import time
from elasticsearch import Elasticsearch
from elasticsearch import helpers
import config
es = None

def init():
    global es
    es = Elasticsearch([config.ES_HOST], port=config.ES_PORT)

def addRecord():
    print("<======start addRecord===========>")
    actions = []
    #要插入的数据
    action = {
        "_index": "properties_demo-01_2020-08",
        "_type": "_doc",
        "_id": "dtORKXQBYFLC1S8JD5l8",
        "_score": 5.7014313,
        "_source": {
            "formatValue": "59255",
            "productId": "DEMO-01",
            "propertyName": "属性2",
            "property": "prop2",
            "numberValue": 59255,
            "deviceId": "DEMO-01-0110",
            "value": "59255",
            "timestamp": 1598425197323
        }
    }
    actions.append(action)
    str = helpers.bulk(es,actions)
    print(str)
if __name__ == '__main__':
    init()
    addRecord()
  1. 删除记录(delete)
# coding=utf-8

import config
from elasticsearch import Elasticsearch

es = None
def init():
    global es
    es = Elasticsearch([config.ES_HOST], port=config.ES_PORT)

def esDel():
    print("<====start del=====>")
    #删除所需三要素
    indexname='properties_demo-01_2020-08'
    doctype='_doc'
    id='dtORKXQBYFLC1S8JD5l8'
    res = es.delete(index=indexname,doc_type=doctype,id=id)
    print(res)
    print("<====end del=====>")

if __name__ == '__main__':
    init()
    esDel()
  1. 查询记录(包含aggs聚合)

query下size限制hits中返回记录数

aggs下size默认为10,若超过10需手动设置

# coding=utf-8

import config
from elasticsearch import Elasticsearch

es = None

def init():
    global es
    es = Elasticsearch([config.ES_HOST], port=config.ES_PORT)

def esSearch():
    index = 'properties_'  + '*'
    deviceid =  "DEMO-01-0110"
    body = {
        "query": {
            "bool": {
                "must": [
                    {
                        "term": {"deviceId": deviceid}
                    }
                    # ,{
                    #     "term": {"property": 'prop2'}
                    # }
                ]
                # ,
                # "must_not":[
                #     {"term": {"property": 'stat'}}
                # ]
                ,
                # 时间范围过滤
                "filter": {
                    "range": {"timestamp": {"gt": 1598425197000, "lte": 1598425297000}}
                }
            }
        }
        ,
        "size":0,#query返回的hits长度,这里不需要查询明细内容设置为0
        "aggs":{
            #自定义name,解析buckets时需用到
            "property_agg":{
                "terms":{
                    "field":"property",
                    "size":20, #默认只返回10个桶,若超过10个需手动设置size
                    "order":{
                        "min_property":"desc"
                    }
                },
                "aggs": {
                    "min_property": {
                        "min": {
                            "field": "numberValue"
                        }
                    }
                    ,
                    "max_property": {
                        "max": {
                            "field": "numberValue"
                        }
                    },
                    "avg_property": {
                        "avg": {
                            "field": "numberValue"
                        }
                    },
                    "sum_property": {
                        "sum": {
                            "field": "numberValue"
                        }
                    }
                }
            }


        }
        # ,"sort": {"timestamp": {"order": "desc"}}#,
        # "collapse": {"field": "property"}
    }
    # filter_path = ['hits.hits._id', 'hits.hits._source']
    result = es.search(index=index, body=body)
    print(result['hits'])
    print(result['aggregations'])
    print(result['aggregations']['property_agg'])
    print(result['aggregations']['property_agg']['buckets'])
    buckets = result['aggregations']['property_agg']['buckets']
    for item in buckets:
        print("property:" ,item['key'],"  min_property:",item['min_property']['value'],"  avg_property",item['avg_property']['value'],"  max_property:",item['max_property']['value'],"  sum_property:",item['sum_property']['value'])

if __name__ == '__main__':
    init()
    esSearch()
  1. stats聚合查询
stats包含max、min、avg、count、sum
# coding=utf-8

import config
from elasticsearch import Elasticsearch

es = None

def init():
    global es
    es = Elasticsearch([config.ES_HOST], port=config.ES_PORT)

def esSearch():
    index = 'properties_'  + '*'
    deviceid =  "DEMO-01-0110"
    body = {
        "query": {
            "bool": {
                "must": [
                    {
                        "term": {"deviceId": deviceid}
                    }
                    # ,{
                    #     "term": {"property": 'prop2'}
                    # }
                ]
                # ,
                # "must_not":[
                #     {"term": {"property": 'stat'}}
                # ]
                ,
                # 时间范围过滤
                "filter": {
                    "range": {"timestamp": {"gt": 1598425197000, "lte": 1598425297000}}
                }
            }
        }
        ,
        "size":0,#query返回的hits长度,这里不需要查询明细内容设置为0
        "aggs":{
            #自定义name,解析buckets时需用到
            "property_agg":{
                "terms":{
                    "field":"property",
                    "size":20  #默认只返回10个桶,若超过10个需手动设置size

                },
                "aggs": {
                    "stats_property": {
                        "stats": {#stats包含max、min、avg、count、sum
                            "field": "numberValue"
                        }
                    }

                }
            }


        }
        # ,"sort": {"timestamp": {"order": "desc"}}#,
        # "collapse": {"field": "property"}
    }
    # filter_path = ['hits.hits._id', 'hits.hits._source']
    result = es.search(index=index, body=body)
    print(result['hits'])
    print(result['aggregations'])
    print(result['aggregations']['property_agg'])
    print(result['aggregations']['property_agg']['buckets'])
    buckets = result['aggregations']['property_agg']['buckets']
    #解析buckets
    for item in buckets:
        print("property:" ,item['key'],"  min:",item['stats_property']['min'],"  avg",item['stats_property']['avg'],"  max:",
              item['stats_property']['max'],"  sum:",item['stats_property']['sum'],"  count:",item['stats_property']['count'])

if __name__ == '__main__':
    init()
    esSearch()

Python实战项目:百度搜索引擎开发案例 Python凭借其简洁清晰的语法结构和丰富的第三方库,成为搜索引擎开发的首选语言之一。本章将快速回顾Python基础语法,涵盖变量、流程控制、函数定义与模块导入等核心语法结构,并通过示例代码展示其实际应用方式。同时,将概述搜索引擎的基本组成模块,包括爬虫、索引与查询系统,为后续章节的深入实现奠定坚实基础。通过本章学习,读者将具备使用Python进行网络数据抓取与信息检索系统构建的初步能力。网络爬虫(Web Crawler)又称为网络蜘蛛(Web Spider),是一种自动访问网页并抓取内容的程序。 阅读详情

相关推荐

ESP32拓展板DIY全攻略:从零打造你的传感器控制中心(附PCB设计文件)

本文详细介绍了如何从零开始DIY ESP32拓展板,打造多功能传感器控制中心。内容涵盖项目规划、硬件设计、PCB布局、制作测试全流程,并提供进阶优化建议和实战案例。特别适合嵌入式硬件爱好者学习ESP32拓展板开发,实现各类传感器的高效集成与控制。

blockchain9miner的博客 1078

python操作Elasticsearch (一、例子)

E lasticsearch是一款分布式搜索引擎,支持在大数据环境中进行实时数据分析。它基于Apache Lucene文本搜索引擎,内部功能通过ReST API暴露给外部。除了通过HTTP直接访问El

wcqlwyt的博客 617

从病毒分析到安全研究:手把手教你用OD破解加壳程序的反调试机制

本文深入探讨了如何识别并绕过加壳程序的反调试机制,特别是针对使用IsDebuggerPresent等API检测的防护手段。通过实战案例和工具链配置,详细介绍了逆向工程中的关键技巧,包括内存补丁、硬件断点定位OEP等,帮助安全研究人员有效突破软件保护技术。

tgb345678的博客 824

Elasticsearch:关于在 Python 中使用 Elasticsearch 你需要知道的一切 - 8.x

Elasticsearch 是一个非常强大的搜索引擎,使用非常广泛。本文的重点是使用 Python 批量创建 Elasticsearch 文档。我们仅仅触及了 Elasticsearch 搜索查询的皮毛。我有专门的文章介绍 Elasticsearch的 基本查询和高级查询,用于搜索和分析。Elasticsearch 原生语言中使用的查询与 Python 中使用的查询相同。因此,当你掌握了Kibana中的原生查询后,你就可以在Python中自由使用了。

Elastic 中国社区官方博客 9695

告别Quartus II的漫长等待:用VSCode+iverilog+GTKWave搭建你的轻量级Verilog仿真环境(2024保姆级教程)

本文详细介绍了如何利用VSCode、iverilog和GTKWave构建高效的Verilog/SystemVerilog开发环境,替代传统的Quartus II和ModelSim工具。通过2024年最新的保姆级教程,帮助开发者实现秒级启动、低资源消耗的轻量级仿真环境,显著提升数字电路设计的开发效率和调试体验。

weixin_33690963的博客 561

AI自主网络攻击技术深度解析:从LLM驱动到防御体系升级

网络安全领域正经历从自动化脚本到智能自主攻击的范式转变。其核心原理在于将大型语言模型(LLM)与自动化渗透测试框架深度融合,构建具备环境感知、决策规划和自适应能力的攻击系统。这种技术的核心价值在于实现了从预设步骤到目标驱动的质变,能自主完成信息收集、漏洞利用、横向移动等复杂攻击链。在应用场景上,它不仅能极大提升高级持续性威胁(APT)的攻击效率,也对渗透测试和红队演练技术提出了新的要求。面对此类由AI驱动的自主攻击,传统的基于签名的防御体系已显不足,必须转向以行为分析和零信任为核心的整体纵深防御。本次曝光的

weixin_34254464的博客 606

python elasticsearch_Python Elasticsearch api

一、介绍ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。下面介绍了利用Python API接口进行数据查询,方便其他系统的调用。安装APIpip3 install elasticsearch建立es连接无用户名密码状态from elasticsearch importElasticsearches= Elas...

weixin_39928233的博客 346

告别里程焦虑:手把手教你用MATLAB/Simulink仿真电动车AMT换挡规律(附代码)

本文详细介绍了如何使用MATLAB/Simulink仿真电动车AMT换挡规律,帮助解决里程焦虑问题。通过搭建完整的仿真系统,包括电机MAP图处理、Stateflow逻辑实现和动力性与经济性换挡曲线生成,优化电动车换挡策略以提升续航与性能。附带的代码示例和实用技巧使开发者能够快速上手并验证仿真结果。

weixin_26757925的博客 306

用 Python 优雅地玩转 Elasticsearch:实用技巧与最佳实践

Elasticsearch,这个开源的分布式搜索与数据分析引擎,因其强大的全文搜索功能而广受欢迎。尽管Elasticsearch的核心是用Java编写的,它提供了REST API,让各种编程语言的开发者都能轻松与之交互,Python当然也不例外。今天,我们将深入探讨如何将 Elasticsearch 与 Python 结合使用,提升我们的项目到新的高度。1、入门准备首先,确保我们有一个运行中的 E...

铭毅天下Elasticsearch 2921

从零构建AI辅助逆向分析环境:JADX-MCP与LLM的实战集成指南

本文详细介绍了如何从零构建AI辅助逆向分析环境,通过集成JADX-MCP与LLM技术,提升Android应用逆向工程效率。文章涵盖环境搭建、插件安装、MCP服务器配置及实战案例分析,帮助开发者快速掌握AI在代码理解、漏洞挖掘和自动化文档生成中的应用。

weixin_27875131的博客 839

芒果YOLOv7改进48:主干篇:独家首发改进:目标检测新范式骨干PPHGNetv2改进版,充分融合信息特征,提升YOLOv7检测能力

YOLOv7代码改进实践 | 独家首发改进 PPHGNetv2 改进版结构

包括YOLOv5、YOLOv7、YOLOv8等模型改进 1849

python读取Elasticsearch指定字段demo

很多企业使用开源的elk框架 大多把数据直接扔到es中 实际环境中需要使用es的数据 官方有很多模式,这里随便画了一个demo 由于dsl语法不熟悉 # encoding: utf-8 from elasticsearch import Elasticsearch import json es = Elasticsearch([{'host':'192.168.163.22','port':920...

lefooter的博客 1197

【软考之软件设计师】学习笔记

interface 接口implements 实现接口(与接口配套使用)接口里要是有方法定义,子类就会实现。

云轩阁 2533

ElasticSearch的Python Client集成

Python Client 链接阿里云ES的代码案例,参考了ES官方文档仅供学习参考使用

加贝的博客 612

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

ElasticSearch, Kibana整套安装以及和python的对接,并给出部分操作案例

目录 一: 软件安装 1. 安装ElasticSearch 2. 安装ElasticSearch-Head 主要是为了可视化我们存储的数据 3. 安装Kibana 4. 安装python对接ElasticSearch对接的工具包(前提是你得有个正常的python环境) 5. 安装IK分词器插件 后面会用到 二: python对接ElasticSearch案例 1. 创建索引 2. 删除索引 3....

shawroad的博客 2399

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

《Python实用爬虫案例》练习8:获取搜狗搜索引擎微信文章

目标:获取搜狗搜索引擎上指定关键词的微信文章信息,包括文章标题、链接、简介、发布平台以及发布时间,并保存至本地;相关库名:requests/beautifulsoup/pandas

weixin_43095088的博客 2195

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

python+ES简单案例

ES版本和pip install elasticsearch==x.x.x 版本一致 import requests import json # 初始化es from elasticsearch import Elasticsearch class ESspider(): es = Elasticsearch() mapping = { "properties": { "title": { "type": "text

weixin_46018884的博客 6671

python elasticsearch orm_Elasticsearch SQL ORM查询案例介绍

bboss ES SQL是针对es jdbc的替代解决方案the best elasticsearch highlevel java rest api-----bbossbboss 提供一组sql和fetchQueryAPI,可替代官方esjdbc模块;采用bboss即可拥有bboss的客户端自动发现和容灾能力、对es、jdk、springboot的兼容性能力,又可以拥有esjdbc的所有...

weixin_36205186的博客 775

python检索案例_Python-ElasticSearch搜索查询实例:搜索用法

Elasticsearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene™ 基础之上。 Lucene 可能是目前存在的,不论开源还是私有的,拥有最先进,高性能和全功能搜索引擎功能的库。但是 Lucene 仅仅只是一个库。为了利用它,你需要编写 Java 程序,并在你的 java 程序里面直接集成 Lucene 包。 更坏的情况是,你需要对信息检索有一定程度的理解才能明...

weixin_39748838的博客 175

python案例实操_基于python操作ES实例详解

这篇文章主要介绍了基于python操作ES实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下安装pip install elasticsearch5 # 安装对应版本的模块创建ES对象from elasticsearch5 import Elasticsearch# elasticsearch集群服务器的地址ES = ['127.0.0.1:...

weixin_39670511的博客 138

Python实战案例:flask结合elasticsearch实现全文搜索

Python实战案例:flask结合elasticsearch实现全文搜索 ElasticSearch简称ES,其中Elastic一词通过词典查询获得。 从名字里我们可以知道,ES的特点就在于灵活的搜索,其实ES本身就是一个全文搜索引擎。 一、全文搜索原理 如何实现全文搜索?最简单的方法就是用正则去匹配文档中的字符串。这种方式看似粗暴,但却不乏使用场景,比如Linux中的grep命令,Windows中用Ctrl+F在文件中进行查找等。 这种方式的缺点就是效率低,需要扫描全部文件,有时候搜索一个

play_big_knife的博客 5301

python数据挖掘案例系列教程——python实现搜索引擎

全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 今天我们使用python实现一个网站搜索引擎。主要包含两个部分。网站数据库的生成、搜索引擎。其中搜索引擎部分我们使用单词频度算法、单词距离算法、外部回值算法、链接文本算法、pagerank算法和神经网络学习等6种算法来实现搜索排名。 我们这里将http://blog.youkuaiyun.com/luanpeng82548569

1万+

图解倒排索引:用Python手写一个迷你搜索引擎(附B站弹幕分析案例)

本文详细介绍了如何使用Python实现倒排索引,构建迷你搜索引擎,并应用于B站弹幕分析实战。通过图解倒排索引与正排索引的区别,展示核心数据结构和Python代码实现,帮助开发者快速掌握搜索引擎基础技术。文章还包含TF-IDF算法实现和B站弹幕分析案例,适合对搜索引擎和文本分析感兴趣的读者。

ujm567890的博客 984

python elasticsearch使用

python elasticsearch操作 案例 import datetime from elasticsearch import Elasticsearch from celery_task.celery import app def escon(): es = Elasticsearch( ['localhost:9200'], # 连接集群,以列表的形式存放节点的ip地址 sniff_on_start=True, # 连接前测试 sn

weixin_45143622的博客 265

Operit 集成 OpenCode Zen/Go Provider:协议路由、模型端点与请求头身份指南

本篇指南完整梳理 Operit(Android AI Agent / AI 聊天应用)接入 OpenCode Zen 与 Go 两条公开 API 通道时的当前实现要求:带 `/v1` 版本号的模型列表端点、按官方目录决定的协议路由表、Go 客户端必须声明的 `User-Agent` 与稳定会话头,以及对应的静态验证清单。读完本文,你将掌握 Operit 中 OpenCode provider 的请

gitblog_00995的博客 843

摸一下elasticsearch8的AI能力:语义搜索/vector向量搜索案例

模型都从modelcope找的,hugginface也能找到差不多的,但需要代理且速度很慢。描述的某地的气候,确实为最不相关,这种效果是ES传统的term,fuzzy,prefix,phase_match,regex等搜索方式达不到的。ES有RBAC安全验证,需要curl请求es注册用户并配置角色权限,比较麻烦,这里直接关闭,相关度高的几个sentence的_score最高的排在了最前面,是近义词,也就是有字词重叠的词语间向量化后的欧式距离更小。虽然描述天气好,但至少与天气相关,而。

MJ的博客 1164
上一篇: Python3模拟TCP客户端发送和接收消息,端口自动重连
下一篇: Python3之logging按天分割+控制台根据日志级别颜色区分
程序NM的猿
博客等级 码龄12年 240粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值