默认elasticsearch是使用netty作为http的容器,由于netty并没有权限模块,所以默认es没有任何的权限控制,直接通过http就可以进行任何操作,除非把http禁用。但如果你使用elasticsearch-jetty插件,就可以使用jetty自带的权限管理进行一些权限的控制,同时也可以支持通过https协议来访问es,还有就是支持gzip压缩响应信息。
插件参数
config |
设置jetty的配置文件,可以设置多个jetty的配置文件 | jetty.xml |
plugin |
server_id |
Jetty服务的ID | ESServer |
plugin |
port |
Jetty http请求监听的端口 |
http.port 或9200-9300
|
jetty.xml |
bind_host |
Jetty绑定的地址
|
http.bind_host 或http.host
|
jetty.xml |
publish_host |
Jetty对外发布的地址
|
http.publish_host 或 http.host
|
jetty.xml |
ssl_port |
Jetty SSL连接器监听的端口 |
jetty-ssl.xml 和jetty-strong-ssl.xml
|
|
ssl_bind_host |
Jetty SSL连接器绑定的地址 |
jetty-ssl.xml 和jetty-strong-ssl.xml
|
|
keystore_password |
SSL连接器的keystore的密码. 纯文本类型的密码可以使用。经过哈希加密过的密码不支持。 |
jetty-ssl.xml 和jetty-strong-ssl.xml
|
1.安装
由于我试验是使用0.90.0BETA1版本的es,这个插件目前是支持0.20.2版本的es,新版本的es有些方法名变了,把源码下下来,把变了名的方法改过来从新编译打包就行。
打包完后把project home/target/release里面的压缩文件放到es的plugins目录解压,
修改es配置文件elasticsearch.yml,添加
http.type: com.sonian.elasticsearch.http.jetty.JettyHttpServerTransportModule
把项目根目录下的config文件夹里面的文件(除了elasticsearch.yml和logging.yml)复制到es的config目录下。
启动es。
2.验证插件是否安装成功
(1)
es控制台出现一下字样:
[2013-04-14 08:45:11,658][INFO ][org.eclipse.jetty.server.Server] [Songbird] jet
ty-8.1.4.v20120524
[2013-04-14 08:45:11,845][INFO ][org.eclipse.jetty.server.AbstractConnector] [So
ngbird] Started SelectChannelConnector@0.0.0.0:9200
(2)
随便发送一个请求,如$ curl -I "http://localhost:9200/"
查看响应头,如果包含Server: Jetty(8.1.4.v20120524)就表示安装成功。
HTTP/1.1 200 OK
Content-Type: text/plain;charset=UTF-8
Access-Control-Allow-Origin: *
Content-Length: 0
Server: Jetty(8.1.4.v20120524)
3.配置ssl使其支持https请求
配置在原有基础上加上
sonian.elasticsearch.http.jetty:
config: jetty.xml,jetty-ssl.xml
ssl_port: 9443
keystore_password: "OBF:1nc01vuz1w8f1w1c1rbu1rac1w261w9b1vub1ndq"
4.添加基本权限控制
修改es配置文件,添加jetty-hash-auth.xml,jetty-restrict-writes.xml两个文件到config中
http.type: com.sonian.elasticsearch.http.jetty.JettyHttpServerTransportModule
sonian.elasticsearch.http.jetty:
config: jetty.xml,jetty-hash-auth.xml,jetty-restrict-writes.xml
其中jetty-hash-auth.xml文件里面引用到realm.properties这个文件配置的权限信息。
格式如下:
username: password[,rolename ...]
即:用户名:密码[,角色1,角色2...]
可以看看例子:
superuser: Adm1n,admin,readwrite
user: Passw0rd,readwrite
例如第二个就是用户名为user,密码为Passw0rd,角色为readwrite,即有读写的权限。这个权限角色是在jetty-restrict-writes.xml里面设置的。
jetty-restrict-writes.xml这个文件对es集群的写操作进行了限制,即要通过鉴权才能进行写操作。具体设置可以查看这个文件。
这时重新启动es,对es进行写入或删除删除操作,如果发现报403错误,就表示配置成功。
这时就必须在请求头加上权限验证,格式如下:
参数名:Authorization
值:Basic + Base64(用户名:密码) 即对用户名和密码进行Base64加密
如加密后的值为:Basic dXNlcjpQYXNzdzByZA==
curl方式调用
curl -v --user username:password http://localhost:9200
5.日志记录请求
设置es,把http.type设置成FilterHttpServerTransportModule
http.type: com.sonian.elasticsearch.http.filter.FilterHttpServerTransportModule
添加详细设置,该插件可以自由控制不同请求url的日志级别,如一些不是很重要的的请求(如查询集群健康和节点状态),我们把它设置成trace状态,如果是搜索或统计这些重要的查询,我们可以设置记录它的请求的body信息,配置如下。
sonian.elasticsearch.http.filter:
http_filter_chain: ["logging"]
http_filter:
# Request logging filter
logging:
logger: request
format: text
type: com.sonian.elasticsearch.http.filter.logging.LoggingFilterHttpServerAdapter
level: INFO
log_body: false
loggers:
stats:
path: ["/_cluster/health", "/_cluster/nodes", "/_cluster/state", "/_cluster/nodes/{node}/stats"]
method: GET
level: TRACE
searches:
path: ["/_search", "/_search/scroll", "/_search/scroll/{scroll_id}", "/{index}/_search",
"/{index}/{type}/_search", "/{index}/{type}/{id}/_mlt"]
method: GET, POST
log_body: true
count:
path: ["/_count", "/{index}/_count", "/{index}/{type}/_count"]
method: GET, POST
log_body: true
这样设置的话日志都是写进一个文件里,如果想每天对文件进行拆分,可以修改config里面的logging.yml文件,添加如下内容:
logger:
........
request: INFO, request_log_file
additivity:
request: false
appender:
.........
request_log_file:
type: dailyRollingFile
file: ${path.logs}/${cluster.name}_requests.log
datePattern: "'.'yyyy-MM-dd"
layout:
type: pattern
conversionPattern: "[%d{ABSOLUTE}] %m%n"
6.开启GZip压缩响应信息
只需把jetty-gzip.xml加到config参数就行。
相关推荐
码头插件兼容性下表显示了构建Jetty插件的elasticsearch和jetty的版本。 码头插件弹性搜索码头1.2.1 1.2.1 8.1.14.v20131031 1.1.1-测试版1.1.1 8.1.14.v20131031 1.1.0-测试版1.1.0 8.1.14.v20131031 1.0.1 1.0.1 ...
(狂神)ElasticSearch快速入门笔记,ElasticSearch基本操作以及爬虫(Java-ES仿京东实战),包含了小狂神讲的东西,特别适合新手学习,笔记保存下来可以多看看。好记性不如烂笔头哦~,ElasticSearch,简称es,es是一个...
十分钟学会使用 Elasticsearch 优雅搭建自己的搜索系统。 什么是elasticsearch Elasticsearch 是一个开源的高度可扩展的全文搜索和分析引擎,拥有查询近实时的超强性能。 大名鼎鼎的Lucene 搜索引擎被广泛用于搜索...
elasticsearch.js, 使用ElasticSearch的简单javascript库 一个简单的javascript库,用于处理 ElasticSearch 。它还提供了一个backend接口,适合于与倾斜式数据库套件一起使用。用法库需要:下划线jQuery ( 用于Ajax...
elasticsearch elasticsearch-6.2.2 elasticsearch-6.2.2.zip 下载
一般来说我们开发Elasticsearch会选择使用集成springboot,在网上找的springboot集成elasticsearch文章几乎都是extends ElasticsearchRepository的方式来实现。但是新版本ElasticsearchRepository里的方法基本上已经...
jar包,官方版本,自测可用
jar包,官方版本,自测可用
全文搜索引擎ElasticSearch介绍与使用
Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。根据DB-Engines的排名显示,Elastic...
elasticsearch-7.17.6及对应版本IK分词 适合人群:elasticsearch初学者 Elasticsearch 是位于 Elastic Stack 核心的分布式搜索和分析引擎。Logstash 和 Beats 有助于收集、聚合和丰富您的数据并将其存储在 Elastic...
elasticsearch java使用手册包含最基本的es使用方法。
分享一套完整版视频课程——分布式搜索引擎Elasticsearch开发实战基础篇 (Elastic...Elasticsearch基本使用和简单查询 Elasticsearch的Java客户端使用 Elasticsearch索引和Mapping Elasticsearch搜索深入 Elastic
赠送jar包:elasticsearch-6.8.3.jar; 赠送原API文档:elasticsearch-6.8.3-javadoc.jar; 赠送源代码:elasticsearch-6.8.3-sources.jar; 赠送Maven依赖信息文件:elasticsearch-6.8.3.pom; 包含翻译后的API文档...
Elasticsearch+thinkphp5.1后台管理索引和文档+权限管理,可查看https://blog.csdn.net/weixin_39934453/article/details/120097526
jar包,官方版本,自测可用
Elasticsearch 简介 简单描述Elasticsearch Elasticsearch的特性 分布式、全文检索、近实时搜索和分析、高可用、模式自由、restful 讲述Elasticsearch的架构和Elasticsearch 的核心 概念 二、索引数据 单词 文档...
赠送jar包:elasticsearch-6.3.0.jar; 赠送原API文档:elasticsearch-6.3.0-javadoc.jar; 赠送源代码:elasticsearch-6.3.0-sources.jar; 赠送Maven依赖信息文件:elasticsearch-6.3.0.pom; 包含翻译后的API文档...
适用于7.17.1系列,例如Elasticsearch的7.17.12版本。 elasticsearch-analysis-ik 是一个常用的...中文数字处理:elasticsearch-analysis-ik 还针对中文文本中的数字进行了特殊处理。它将连续的数字组合成一个整体。
docker run --name elasticsearch7.16.3 -p 127.0.0.1:9200:9200 -p 127.0.0.1:9300:9300 -e "discovery.type=single-node" -v /Users/xingyue/Home/xingyue/学习/工程化/es/elasticsearch.yml:/usr/share/elastic...