esjavadsl的简单介绍
本篇文章给大家谈谈esjavadsl,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、【es】es界面化管理工具cerebro的安装和使用
- 2、ElasticSerach DSL基本语法
- 3、用ElasticSearch检索数据是发现,ES里面的时间orderTime是 2015-08-27格式的字符串,用java dsl搜索
- 4、java中如何直接读取es语言
- 5、Elasticsearch解决问题之道——请亮出你的DSL
- 6、ES-DSL基本使用
【es】es界面化管理工具cerebro的安装和使用
Cerebro 是 Elasticsearch 版本5.x 以前插件 Elasticsearch Kopf 的演变,可以通过图形界面查看分片分配和执行常见的索引操作。
Cerebro是一个使用Scala,Play Framework,AngularJS和Bootstrap构建的开源(MIT许可)elasticsearch web管理工具,比Kibana轻量很多,很适用与生产和测试等环境的es集群管理。
它是kopf的升级版本,更改了个名字,包含kopf的功能(监控工具,并包含head插件的部分功能,可图形化的进行新建索引等操作。
现在kopf已经不再更新,只对cerebro进行维护。
Cerebro的运行需要Java 1.8或更高版本才能运行。
默认es集群和java环境已经配置完成。
如果你想做 docker 安装,请参阅链接
# wget
# unzip cerebro-0.9.4.zip -d /opt
# useradd cerebro
# chown -R cerebro:cerebro /opt/cerebro-0.9.4/
# vim /etc/systemd//system/cerebro.service
#######################################################################
[Unit]
Description=Cerebro
Requires=network.target
[Service]
Type=simple
WorkingDirectory=/opt/cerebro-0.9.4
ExecStart= /opt/cerebro-0.9.4/bin/cerebro -Dhttp.address=0.0.00 -Dhttp.port=9000
ExecReload=/bin/kill -HUP $MAINPID
Restart=always
RestartSec=60
SuccessExitStatus=143
TimeoutStopSec=5
User=cerebro
ExecStartPre=/bin/mkdir -p /run/cerebro /var/lib/cerebro
ExecStartPre=/bin/chown cerebro:cerebro /run/cerebro /var/lib/cerebro
ExecStartPre=/bin/chmod 755 /run/cerebro /var/lib/cerebro
PermissionsStartOnly=true
LimitNOFILE=1024
[Install]
WantedBy=multi-user.target
########################################################################
# vim /opt/cerebro-0.9.4/conf/application.conf
###################################
data.path: "/var/lib/cerebro/cerebro.db"
###################################
# vim /opt/cerebro-0.9.4/bin/cerebro
#####################################
JAVA_HOME="/opt/jre-1.8.0_112"
#####################################
# systemctl daemon-reload
# systemctl enable cerebro
# systemctl restart cerebro
# systemctl status cerebro
# wget
# yum -y localinstall cerebro-0.9.4-1.noarch.rpm
或者
# yum -y install
# vim /usr/share/cerebro/bin/cerebro
############################################
JAVA_HOME="/opt/jre-1.8.0_112"
#############################################
# vim /usr/share/cerebro/conf/application.conf
###################################
data.path: "/var/lib/cerebro/cerebro.db"
###################################
# systemctl daemon-reload
# systemctl enable cerebro
# systemctl restart cerebro
# systemctl status cerebro
浏览器登陆 ,看到开始页面即为成功。
Node address 输入es集群master节点的一个地址
1.overview界面
集群节点、索引、分片、文档数量、磁盘使用量等信息
2.nodes界面
各个节点的具体信息,包括负载、cpu、堆、磁盘使用、启动时间等信息
3.more功能
包含了很多常用功能,创建索引、查看集群设置,别名、分析等功能
4. 如果索引的分片分布不均匀,可以选中某个节点上的分片,重新分配
5. Rest页,提供了对Elasticsearch的基本操作,发送DSL请求对数据进行操作o(GET/POST/PUT/DELETE)
cerebro能满足我们对es集群的日常管理维护 ,还是直接上图比较直观。
支持索引创建删除,修改集群配置参数 等等,其他功能有需要的可以多研究研究。
需要注意的是 delete index 命令在生产环境切勿乱执行,要慎重!
更新cerebro启动参数配置,让其只监听 127.0.0.1:9000
# vim /usr/lib/systemd/system/cerebro.service
###############################################################
[Unit]
Description=Elasticsearch web admin tool
Requires=network.target
[Service]
Type=simple
WorkingDirectory=/usr/share/cerebro
EnvironmentFile=/etc/default/cerebro
ExecStart=/usr/share/cerebro/bin/cerebro -Dhttp.address=127.0.0.1 -Dhttp.port=9000
ExecReload=/bin/kill -HUP $MAINPID
Restart=always
RestartSec=60
SuccessExitStatus=143
TimeoutStopSec=5
User=cerebro
ExecStartPre=/bin/mkdir -p /run/cerebro
ExecStartPre=/bin/chown cerebro:cerebro /run/cerebro
ExecStartPre=/bin/chmod 755 /run/cerebro
PermissionsStartOnly=true
LimitNOFILE=1024
[Install]
WantedBy=multi-user.target
################################################################
# systemctl deamon-reload
# systemctl restart cerebro
# systemctl status cerebro
# yum -y install epel-release nginx
# cat /etc/nginx/nginx.conf
############################################################
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
events {
worker_connections 1024;
}
http {
server {
listen 9001;
server_name 192.168.100.153;
location / {
auth_basic "Protect cerebro";
auth_basic_user_file /etc/nginx/passwd.db;
proxy_pass ;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_connect_timeout 15;
proxy_send_timeout 30;
proxy_read_timeout 30;
proxy_redirect off;
proxy_buffering off;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
############################################################
# echo "admin:`openssl passwd 123456`" /etc/nginx/passwd.db
# cat /etc/nginx/passwd.db
######################
admin:VkEypoHtWIksI
######################
# systemctl restart nginx
# systemctl status nginx
--------
Elasticsearch工具cerebro的安装与使用
What Is SQLite?
ES 集群管理工具--cerebro
Elasticasearch Web管理工具-Cerebro
ELK插件Cerebro(kopf升级版)安装
ES集群监控 之 Cerebro 0.8.3 安装及简单使用
ElasticSerach DSL基本语法
查询[字段]包含[内容]的文档
这种方式一般称之为QueryString查询方式,参数都是在URL中作为请求参数的。
QueryString用的很少,一旦参数复杂就很难构建,所以大多数查询都是使用dsl来进行查询比较好。
!补充:语法格式为一个json object,内容都是key-value键值对,json可以嵌套。 key可以是一些es的关键字,也可以是某个field字段
在索引中查询所有的文档
match:分词后只要有数据就会进行匹配然后返回
match_phrase:分词结果必须在text字段分词中都包含,而且顺序必须相同,而且必须都是连续的(搜索相对而言比较严格)
搜索的时候会吧用户搜索内容,比如:"你是真的丑爆了!"作为一个整体的关键字去搜索,而不会对其他的分词后在搜索。
!注:match会对"你是真的丑爆了!"些进行分词(其实就是全文搜索),在查询,而term则不会,直接吧"你是真的丑爆了!"作为一个整的词汇去搜索。
由于文本会被分词,所以往往要去做排序会报错,通常我们可以为这个字段增加额外的一个附属属性,类型为keyword,用于做排序。
用ElasticSearch检索数据是发现,ES里面的时间orderTime是 2015-08-27格式的字符串,用java dsl搜索
你要看下这个字段的type是什么,是字符串但并不一定是“string”类型。
其次,你要看下"index": "analyzed",是不是分词了。
java中如何直接读取es语言
Elasticsearch不是java语言开发的,所以必须要通过api才能调用。你可以看看有没有第三方包可以直接操作。
Elasticsearch解决问题之道——请亮出你的DSL
0、引言
在业务开发中,我们往往会陷入开发的细枝末节之中,而忽略了事物的本源。
经常有同学问到:
等等等等…..
以上的看似复杂的问题,如果转换成DSL,清楚的写出来,梳理清楚问题的来龙去脉,问题就自然解决了一大半。
所以,请亮出你的dsl,不论什么语言的检索,转换到es查询都是sql查询,在es中对应dsl语法,es再拆解比如:分词match_phrase拆解成各term组合,最终传给lucene处理。
亮出你的dsl,确保编程里的实现和你的kibana或者head插件一致是非常重要、很容易被忽视的工作。
如果对dsl拆解不理解,那就再 加上 profile:true或者explain:true拆解结果一目了然。
维基百科定义:领域特定语言(英语:domain-specific language、DSL)指的是专注于某个应用程序领域的计算机语言。又译作领域专用语言。
Elasticsearch提供基于JSON的完整查询DSL来定义查询。 将Query DSL视为查询的AST(抽象语法树),由两种类型的子句组成:
1、叶子查询子句
叶查询子句查找特定字段中的特定值,例如匹配,术语或范围查询。 这些查询可以单独使用。
2、复合查询子句
复合查询子句可以组合其他叶子或复合查询,用于以逻辑方式组合多个查询(例如bool或dis_max查询),或更改其行为(例如constant_score查询)。
给个例子,一看就明白。
看到这里,可能会有人着急了:“我X,这不是官网定义吗?再写一遍有意思吗?”
引用一句鸡汤话,“再显而易见的道理,在中国,至少有一亿人不知道”。同样的,再显而易见的问题,在Elasticsearch技术社区也会有N多人提问。
基础认知不怕重复,可怕的是对基础的专研、打磨、夯实。
Elasticsearch相关的核心操作,广义上可做如下解读,不一定涵盖全,仅抛砖引玉,说明DSL的重要性。
从大到小。
集群的管理,一般我们会使用Kibana或者第三方工具Head插件、cerebro工具、elastic-hq工具。
基本上硬件的(磁盘、cpu、内存)使用率、集群的 健康 状态都能一目了然。
但基础的DSL会更便捷,便于细粒度分析问题。
如:集群状态查询:
如:节点热点线程查看:
如:集群分片分配情况查看:
索引生命周期是一直强调的概念,主要指索引的“生、老、病、死”的全过程链条的管理。
创建索引我们优先使用较单纯index更灵活的template模板。
创建索引类似Mysql的创建表的操作,提前设计好表结构对应ES是提前设计好M app ing非常重要。
两个维度:
举例:
如:索引清理缓存。
如:某原因导致分片重新分配,_recovery查看分片分配状态。
高版本的索引生命周期管理推荐使用:ILM功能。
这个是大家再熟悉不过的了。
举例:
删除数据包括:指定id删除 delete和批量删除delete_by_query(满足给定条件)。
更新操作。包括:指定id的update/upsert或者批量更新update_by_query。
这是ES的重头戏。包含但不限于:
1、支持精确匹配查询的:term、range、exists、wildcard、prefix、fuzzy等。
2、支持全文检索的:match、match_phrase、query_string、multi_match等
1、Bucketing分桶聚合
举例:最常用的terms就类似Mysql group by功能。2、Metric计算聚合
举例:类比Mysql中的: MIN, MAX, SUM 操作。3、Pipeline针对聚合结果聚合
举例:bucket_script实现类似Mysql的group by 后having的操作。
留给大家 结合 业务场景思考添加。
这里把开头提到的几个问题逐一解答一下。
实际Mysql业务中,我们一般是先验证sql没有问题,再写业务代码。
实际ES业务中,也一样,先DSL确认没有问题,再写业务代码。
写完java或者python后,打印DSL,核对是否完全一致。
不一致的地方基本就是结果和预期不一致的原因所在。
第一步:借助analyzer API分析查询语句和待查询document分词结果。
这个API的重要性,再怎么强调都不为过。
第二步:可以借助profile:true查看细节。第三步:核对match_phrase词序的原理。
6.3版本后已经支持sql,如果不会写,可以借助translate 如下API翻译一下。
不够精确,但足够参考用了,需要根据业务细节微调。
当然,还是 建议 ,从业务出发,自己写DSL。
从大往小,逐步细化排解
END
公众号 ( zhisheng )里回复 面经、ES、Flink、 Spring、Java、Kafka、监控 等关键字可以查看更多关键字对应的文章
1、《从0到1学习Flink》—— Apache Flink 介绍
2、《从0到1学习Flink》—— Mac 上搭建 Flink 1.6.0 环境并构建运行简单程序入门
3、《从0到1学习Flink》—— Flink 配置文件详解
4、《从0到1学习Flink》—— Data Source 介绍
5、《从0到1学习Flink》—— 如何自定义 Data Source ?
6、《从0到1学习Flink》—— Data Sink 介绍
7、《从0到1学习Flink》—— 如何自定义 Data Sink ?
8、《从0到1学习Flink》—— Flink Data transformation(转换)
9、《从0到1学习Flink》—— 介绍 Flink 中的 Stream Windows
10、《从0到1学习Flink》—— Flink 中的几种 Time 详解
11、《从0到1学习Flink》—— Flink 读取 Kafka 数据写入到 ElasticSearch
12、《从0到1学习Flink》—— Flink 项目如何运行?
13、《从0到1学习Flink》—— Flink 读取 Kafka 数据写入到 Kafka
14、《从0到1学习Flink》—— Flink JobManager 高可用性配置
15、《从0到1学习Flink》—— Flink parallelism 和 Slot 介绍
16、《从0到1学习Flink》—— Flink 读取 Kafka 数据批量写入到 MySQL
17、《从0到1学习Flink》—— Flink 读取 Kafka 数据写入到 RabbitMQ
18、《从0到1学习Flink》—— 你上传的 jar 包藏到哪里去了
19、大数据“重磅炸弹”——实时计算框架 Flink
20、《Flink 源码解析》—— 源码编译运行
21、为什么说流处理即未来?
22、OPPO数据中台之基石:基于Flink SQL构建实数据仓库
23、流计算框架 Flink 与 Storm 的性能对比
24、Flink状态管理和容错机制介绍
25、原理解析 | Apache Flink 结合 Kafka 构建端到端的 Exactly-Once 处理
26、Apache Flink 是如何管理好内存的?
27、《从0到1学习Flink》——Flink 中这样管理配置,你知道?
28、《从0到1学习Flink》——Flink 不可以连续 Split(分流)?
29、Flink 从0到1学习—— 分享四本 Flink 的书和二十多篇 Paper 论文
30 、360深度实践:Flink与Storm协议级对比
31、Apache Flink 1.9 重大特性提前解读
32、如何基于Flink+TensorFlow打造实时智能异常检测平台?只看这一篇就够了
33、美团点评基于 Flink 的实时数仓建设实践
34、Flink 灵魂两百问,这谁顶得住?
35、一文搞懂 Flink 的 Exactly Once 和 At Least Once
36、你公司到底需不需要引入实时计算引擎?
ES-DSL基本使用
本篇文章主要介绍在ES中如何进行数据的增删查改
ES可以直接新增数据,没有索引会自动创建索引,但是不推荐这种方式,因为会根据默认值创建分片和副本数。
如下,指定settings和mappings来创建索引
查询所有索引信息
查询某个索引下的数据,语法为: GET 索引库名称/索引库类型/_search , 其中索引库类型也可以不写,如下
term用于精确匹配,比如数字,日期,布尔值等
例如:
范围查询,gt大于,lt小于,gte大于等于,lte小于等于
可以用来合并多个过滤条件
wildcard类似于SQL的like查询,需要带上**
regexp即正则查询
ES根据查询条件计算每个匹配的记录的得分,即_scope字段,默认根据得分排序返回
match是根据分词后的结果进行匹配,match_phrase来直接进行短语匹配.如下例子,会查询address字段中包含mill lane短语的记录
如果缓存match,则只有address包含mill或lane,这些记录都会返回
关于esjavadsl和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。