ESP Elasticsearch代理 (PHP Swoole)

五分钟学会Elasticsearch查询代理设计 Elasticsearch(ES)是一款基于Lucene的开源分布式搜索引擎。由于其稳定、可靠、快速、安装使用方便等优良特性,目前在业界已广泛使用。ES用途主要分两个方向:分布式实时文件存储 以及 分布式实时分析搜索引擎。 一、为什么需要查询代理 屏蔽复杂的DSL 某二手交易平台使用ES,主要用来支持商品、用户等(以下统称文档)的搜索和分析。 ES为查询功能提供了基于Json的完整Query DSL,功能非常强大,但同时也略显复杂,学习成本不低。 以搜索昵称为化仁的用户为例,DSL大致如下: json {“ 阅读详情

Elasticsearch Proxy (ESP)

简介

  • 由于Elasticsearch没有提供权限管理功能(官方shield又收费),特开发此Proxy,可以针对Elasticsearch Rest的路径设置权限,可以指定信任IP,支持用户,群组授权
  • 当前版本0.01试用版。
  • 框架基于PHP-Swoole扩展开发,用fast-route库来做http route处理。

安装运行

环境:linux2.6+、php5.5+、mysql5.5+、swoole1.7.20+
下载:https://github.com/xtjsxtj/esp

tar zxvf esp.zip  
cd esp  
./bin/esp start  

查看当前server进程状态:
./bin/esp status

配置文件

系统级配置文件,全局生效,不能reload,只能restart
server_conf.php

<?php

class server_conf {
    public static $config=array(
        'server_name' => 'es_proxy',  //server名称 
        'log_level' => NOTICE,        //跟踪级别TRACE,DEBUG,INFO,NOTICE,WARNING,ERROR
        'listen' => 9501,             //listen监听端口
        'worker_num' => 1,            //工作进程数
        'daemonize' => true,          //是否以守护进程方式运行
        'log_file' => '/home/jfy/testprog/esproxy/proxy/index.log',  //log文件
    );   
}

工作进程配置文件,支持reload
worker_conf.php

<?php

class worker_conf{
    public static $config=array(
        'log_level' => NOTICE,
        'es_url' => 'http://localhost:9200',
        'trust_ip' => [
            '127.0.0.1'
        ],
        'groups' => [
            'cpyf' => 'jfy,zyw',
        ],        
        'users' => [
            'jfy' => '123456',
            'zyw' => '123456',
        ],
        'auths' => [
            ['OPTIONS', '/{param:.+}', '*'], 
            ['GET',     '/{param:.+}', '*'],            
            ['POST',    '/{param1}/_search', '*'],            
            ['POST',    '/{param1}/{param2}/_search', '*'],            
            ['PUT',     '/kibana-int/{param:.+}', '*'],            
            ['DELETE',  '/kibana-int/{param:.+}', '@cpyf'],
        ],
    );
}

针对Elasticsearch的访问权限配置上,只需要修改worker_conf配置文件即可。

配置文件一看上去就应该明白了:

  • es_url,后端Elasticsearch http地址
  • trust_ip,信任的IP列表,不做任何权限限制
  • groups,用户组列表,组下可包含多个用户,用户必须存在于users配置中
  • users,用户列表,用户名 => 密码
  • auths,访问详细rest路径权限设置

      method restpath users
    • method 支持数组方式 [“GET”,”POST”]
    • restpath 访问Elasticsearch的具体路径,支持正则表达式,详情参见:https://github.com/nikic/FastRoute
    • user 授权访问的用户

      • 多个用户以”,”分隔,用户组以@开头,如:jfy,@cpyf表示用户jfy和用户组cpyf中的所有用户都可以访问
      • “*”表示所有用户均可以访问
      • 当用户列表中指明用户或组时,http header中必须包括Basic Auth用户和密码信息:

        Authorization: Basic amZ5OjttMzQ1Ng==
elasticsearch-proxy:轻量级API层,用于使用NodeExpress保护Elasticsearch域 Elasticsearch代理:用于基本Elasticsearch安全性的轻量级API层 该应用程序将搜索请求从允许的来源转发到Elasticsearch并返回响应。 然后可以将您的Elasticsearch访问策略设置为仅允许从托管此应用程序的特定IP地址进行访问。 这样可以防止其他人修改或删除您的Elasticsearch索引。 注意:这只是一个基本的安全层,例如,它不能防止拒绝服务攻击。 有关更多信息,请参见: : 。 指示 使用npm install安装依赖项。 使用您自己的Elasticsearch域( esDomain )和要从中访问它的站点( allowedOrigin )修改app/routes/es_routes.js 。 使用npm run dev在开发模式下运行应用程序,或者使用node server.js在服务器上运行应用程序。 将您的搜索query作 立即下载

相关推荐

aws-es-proxy:aws-es-proxy是一个小型Web服务器应用程序,位于您的HTTP客户端(浏览器,curl等...)和Amazon Elasticsearch服务之间

AWS-ES-代理 aws-es-proxy是一个小型Web服务器应用程序,位于您的HTTP客户端(浏览器,curl等)和Amazon Elasticsearch服务之间。 在将请求发送到Amazon Elasticsearch之前,它将使用最新的您的请求进行。 当响应从Amazon Elasticsearch返回时,该响应将发送回您的HTTP客户端。 Kibana请求也会自动签名。 安装 下载二进制可执行文件 aws-es-proxy具有适用于Linux,Mac和Windows的单个可执行二进制文件。 下载最新的。 码头工人 有适用于aws-es-proxy的官方docker映像。 运

Elasticsearch:反向代理及负载均衡在 Elasticsearch 中的应用

在我们配置 Elasticsearh 安全的时候,我们可以考虑三个方面的东西: firewalls 反向代理 (reverse proxies) Elastic Security 我们可以利用 firewall 已经 IP filtering来限制或允许特定的 IP 地址来访问我们的 Elasticsearch。对于 OSS 的用户来说,他们可以使用 reverse proxy 的方法来实现最基本的安全配置。当然对于 Baisic license 以上的用户来说,我们建议使用 Elastic Se..

Elastic 中国社区官方博客 5017

【论文阅读】High-Resolution Image Synthesis with Latent Diffusion Models

为了降低训练扩散模型的算力,LDMs使用一个Autoencoder去学习能尽量表达原始image space的低维空间表达(latent embedding),大大减少需要的算力。在RGB空间:编码器encoder:,将x压缩成低维表示解码器decoder: D,将低维表示z还原成原始图像空间。1. 加入Autoencoder(上图中左侧红色部分),使得扩散过程在latent space下,提高图像生成的效率;

weixin_57974242的博客 1万+

Tsar部署最佳实践:生产环境中的监控系统配置与优化

Tsar(Taobao System Activity Reporter)是一款轻量级系统监控工具,能够帮助运维人员实时采集服务器性能数据。本文将详细介绍如何在生产环境中部署、配置和优化Tsar监控系统,确保服务器稳定运行。 ## 1. 快速安装Tsar的两种方法 ### 1.1 源码编译安装 源码安装适合需要自定义配置的场景,步骤如下: ```bash # 克隆仓库 git clone ht

gitblog_00099的博客 729

Frida+Objection保姆级教程:从环境搭建到实战Hook(含Wallbreaker插件使用)

本文提供了一份从零开始的Frida与Objection移动安全动态分析实战指南。详细讲解了Python环境配置、Frida-Server部署、Objection核心命令使用以及Wallbreaker插件安装与应用。通过实战案例演示如何Hook网络请求(如HttpURLConnection和OkHttp3),帮助安全研究人员快速掌握应用运行时行为分析与漏洞挖掘技能。

weixin_28318011的博客 100

Spark Graphx 项目实战(航班飞行网图分析)

航班飞行网图分析一.需要的技能点二.任务描述三.数据探索1.下载数据2.数据格式四.航班飞行网图问题分析1.构建航班飞行网图2.统计航班飞行网图中机场与航线的数量3.计算最长的飞行航线4.找出最繁忙的机场5.找出最重要的飞行航线6.找出最便宜的飞行航线五.代码实现 一.需要的技能点 Spark GraphX API Spark GraphX PageRank Spark GraphX Pregel 二.任务描述 需求概述: 探索航班飞行网图数据 构建航班飞行网图 使用Spark GraphX完成下列任

May_J_Oldhu的博客 1538

Es6学习笔记-proxy解读

Proxy用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种元编程,即对编程语言进行编程。Proxy可以理解成在目标对象之前架设一层“拦截”,外界对该对象的访问都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过滤和改写。Proxy这个词意为代理,用在这里表示由它来代理某些操作。`);`);${`);`);`);`);${`);`);`);`);上面代码中对空对象架设了一层拦截,重定义了属性的读取(get)和设置(set)的行为。

weixin_45583729的博客 248

大数据应用技术实验报告一 Hadoop三种模式安装配置

JDK+Hadoop安装配置、单机模式配置 以下操作在SecureCRT里面完成 1.关闭防火墙 firewall-cmd --state 显示防火墙状态running/not running systemctl stop firewalld 临时关闭防火墙,每次开机重新开启防火墙 systemctl disable firewalld 禁止防火墙服务。 2.传输JDK和HADOOP压缩包 Sec...

Ruthless_Childe的博客 3089

ES新特性之Proxy对象

大家好,我是一碗周,一个不想被喝(内卷)的前端。如果写的文章有幸可以得到你的青睐,万分有幸~ 概述 在ES2015的标准中新增了一个Proxy,用于修改某些操作的默认行为,等同于在语言层面作出的修改,所以说这是属于一种元编程 ,(meta programming),即对编程语言进行编程。 Proxy对象用于创建一个对象的“代理”,从而实现基本能操作的拦截和自定义(如属性查找、赋值、枚举、函数调用等)。 通俗一点的解释就是,房子比作原始对象,中介比作Proxy,我们租房可以直接找原始房源,也可以通过中介.

一碗周 1916

谷歌倾斜摄影数据获取以及转换3DTiles介绍

解析谷歌倾斜模型数据,再一键设置无人值守的情况下,快速将谷歌倾斜摄影模型数据转成3DTiles数据,并在Cesium上进行流畅漫游缩放显示,效果优于官方3DTiiles格式数据

cyber_room的博客 5335

Xlinx PG151 除法器IP 笔记

对Xlinx 除法器IP PG151中部分内容记录备忘。

weixin_50515160的博客 2528

ElasticSearch:Nginx可以给ElasticSearch集群带来什么福利?

在高并发的情况下,我们可以采用nginx反向代理负载均衡到多台Elasticsearch 服务器上。 架构图: 那么使用nginx有什么好处呢? 1. 记录每个API访问请求的日志。(ElasticSearch本身不支持这个功能,只有slowLog和服务日志) 2. 支持大量的客户端连接。ES官方的blog中推荐使用keep-alives,在nginx和ES之间使用长连接。

雷雨中的双桅船 6674

YOLOv11改进策略【卷积层】| SPD-Conv 针对小目标和低分辨率图像的检测任务

SPD-Conv是一种新的 CNN 构建模块,用于替代传统 CNN 架构中使用的步长卷积(strided convolution)和池化(pooling)层,它由空间到深度(Space-to-depth,SPD)层和非步长卷积(non - strided convolution)层组成。

Limiiiing的博客 4972

elasticsearch集群各个节点

文章目录相关参数配置介绍:不同节点1、master节点(Master-eligible node):2、data节点(Data node):3、proxy节点:4、预处理节点(Ingest Node)5、tribe节点(Tribe node): 相关参数配置介绍: 单播:discovery.zen.ping.unicast.hosts 设置:discovery.zen.ping.unicast.h...

q936889811的博客 6136

华为OD机试真题 新系统-等距二进制判断(C/C++/Py/Java/Js/Go)

华为OD机试 新系统真题【等距二进制判断】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【等距二进制判断】

qq_45776114的博客 1085

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Elasticsearch在虚拟机中的部署与代理

1.elasticsearch的安装(linux) 选择安装包的时候,由于国外节点下载速度慢,这里给出国内节点的下载地址,elasticsearch依赖jdk,为此在安装elasticsearch的之前,请先安装好与之对应的jdk版本。国内节点下载: JDK:https://repo.huaweicloud.com/java/jdk/13+33/ ES: https://mirrors.huawe...

wweTHEUT的博客 686

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

swoft安装elasticsearch及使用,利用Go实现MySQL binlog与 es数据同步

商品微服务代码 1 安装composer包 在商品微服务根目录下,执行: [root@100 swoft_order]# composer require elasticsearch/elasticsearch 这样,我们的商品微服务就支持elasticsearch了。 2 客户端 app\client\swoft\app\Rpc\Lib\GoodsInterface.php <?php namespace App\Rpc\Lib; /** * * Class GoodsInterface

wjy的博客 808

VB摄像头监控

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

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Elasticsearch学习,请先看这一篇!

题记:Elasticsearch研究有一段时间了,现特将Elasticsearch相关核心知识、原理从初学者认知、学习的角度,从以下9个方面进行详细梳理。欢迎讨论……0. 带着问题上路——ES是如何产生的?(1)思考:大规模数据如何检索?如:当系统数据量上了10亿、100亿条的时候,我们在做系统架构的时候通常会从以下角度去考虑问题: 1)用什么数据库好?(mysql、sybase、oracle、达

铭毅天下Elasticsearch 23万+

INFINI Gateway:Elasticsearch 极限网关入门手册

最近,我有幸接触到 medcl 大神的杰作:极限网关(INFINI GATEWAY)。INFINIGateway 有很多优点,也有很多应用的场景。你可以在官方网站上进行阅读。简单说来,极限网关(INFINI Gateway)是一个面向 Elasticsearch 的高性能应用网关,它包含丰富的特性,使用起来也非常简单。极限网关工作的方式和普通的反向代理一样,我们一般是将网关部署在 Elasticsearch 集群前面, 将以往直接发送给 Elasticsearch 的请求都发送给网关,再由网关转发给请求到.

Elastic 中国社区官方博客 5560

【linux】【ELK】利用elasticproxy对elasticsearch进行二次排序

做过elk的人应该了解kibana排序至支持到秒级别,但同一秒内出现多个日志的时候那么kibana展示的日志就会混轮,加上该代理可以解决该问题# 拉取elasticproxy镜像 [root@localhost ELK-filebeat]# docker pull zhangyuming/elasticproxy Using default tag: latest latest...

577

手把手教你搭建一个 Elasticsearch 集群

https://cloud.tencent.com/developer/article/1189282

极客on之路 770

haproxy 负载elasticsearch 切换

Attempted to send a bulk request to Elasticsearch configured at '["http://192.168.32.152:9200"]', but an error occurred and it failed! Are you sure you can reach elasticsearch from this machine ...

weixin_30483697的博客 366

nginx 反向代理 ElasticSearch es

本文讲述如何使用nginx代理kibana。1、更改kibana.yml文件添加前缀。2、nginx添加配置。3、重启nginx即可。

web18536564348的博客 1304

Logstash处理json格式日志文件的三种方法

file { type => "voip_feedback" path => ["/usr1/data/voip_feedback.txt"] format => json sincedb_path => "/home/jfy/soft/logstash-1.4.2/voip_feedback.access" }

很多时候,你缺少的不是知识而是热情 4万+
上一篇: ASF 基于Swoole开发的PHP App Server框架
下一篇: Gearmand和PECL extension for Gearman版本不兼容的问题
笑天居士
博客等级 码龄24年 292粉丝 136原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值