最新要闻
- 天天信息:全国铁路7月1日起实行新的列车运行图 客、货列车分别增加46列和394列
- 家居巨头宜家引入AI:下一代沙发将由人工智能设计
- 华硕Zenfone 10外观首曝:二代骁龙8小屏旗舰
- 地表最强RTX 4090!索泰RTX 4090 PGF显卡图赏 世界简讯
- 广州新规:快递入柜需收件人同意 虚假签收最高可罚三万!
- 天天信息:长虹发布全球首款多模态交互电视:不管说什么都能听懂
- 天天速读:南方强降雨频繁有致灾风险 北方高温明起再登场
- 人民银行合肥中心支行联合交易商协会举办债务融资工具业务培训|环球滚动
- 每日热闻!英亿万富翁探索泰坦尼克号残骸 现已失联超24小时!
- 售价超20万元 AMD最贵显卡MI300X诞生:192GB显存史无前例
- 今日聚焦!雷军武汉大学演讲:36年前教授这句话打通我任督二脉
- 一天两瓶喝不够:认养一头牛酸/纯奶30盒79.9元抄底(50元立减券)_今日热文
- 原装进口!雀巢黑咖啡官旗大促:券后每杯仅需0.6元|天天热点
- 最新快讯!新干县气象台发布雷电黄色预警信号【III级/较重】【2023-06-20】
- 中国广电5G悲催的第一年:信号差 销户难
- 智能驾驶将进入大模型时代!理想发布通勤NOA内测视频 可自主学习
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
ElasticSearch安装与使用-每日视点
1、安装ES和Kibana
kibana和ES的关系
ES安装
可以自己使用docker pull拉取镜像,但是因为ES比较大,可能比较慢,这里建议大家用解压包的方式获得镜像
获取镜像
启动容器
- 创建网卡(方便kibana通过es容器名连接)
- 启动容器
docker run -d \--name es \-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \-e "discovery.type=single-node" \-v es-data:/usr/share/elasticsearch/data \-v es-plugins:/usr/share/elasticsearch/plugins \--privileged \--network es-net \-p 9200:9200 \-p 9300:9300 \elasticsearch:7.12.1
命令解释:
(资料图片)
-e "cluster.name=es-docker-cluster"
:设置集群名称-e "http.host=0.0.0.0"
:监听的地址,可以外网访问-e "ES_JAVA_OPTS=-Xms512m -Xmx512m"
:内存大小-e "discovery.type=single-node"
:非集群模式-v es-data:/usr/share/elasticsearch/data
:挂载逻辑卷,绑定es的数据目录-v es-logs:/usr/share/elasticsearch/logs
:挂载逻辑卷,绑定es的日志目录-v es-plugins:/usr/share/elasticsearch/plugins
:挂载逻辑卷,绑定es的插件目录--privileged
:授予逻辑卷访问权--network es-net
:加入一个名为es-net的网络中-p 9200:9200
:端口映射配置
浏览器访问检测
启动会有点慢,需要耐心等待下。另外虚拟机的内存最少设置为2G,否则内存不够用
Kibana安装
获取镜像
启动容器
docker run -d \--name kibana \-e ELASTICSEARCH_HOSTS=http://es:9200 \--network=es-net \-p 5601:5601 \kibana:7.12.1
命令解释
--network es-net
:加入一个名为es-net的网络中,与elasticsearch在同一个网络中-e ELASTICSEARCH_HOSTS=http://es:9200"
:设置elasticsearch的地址,因为kibana已经与elasticsearch在一个网络,因此可以用容器名直接访问elasticsearch-p 5601:5601
:端口映射配置
浏览器访问检测
ik分词器安装
查看es插件挂在的数据卷目录
上传ik插件到挂在的目录
将资料中的ik压缩包解压后,上传
重启es容器
配置自己的扩展词&忽略词
- 修改配置,增加扩展词&忽略词配置
- 配置自己的扩展词
- 重启es容器,再次测试观察结果
5、索引库操作(DSL)
mapping映射属性
mapping是对索引库中文档的约束,常见的mapping属性包括:
- type:字段数据类型,常见的简单类型有:
- 字符串:text(可分词的文本)、keyword(精确值,例如:品牌、国家、ip地址)
- 数值:long、integer、short、byte、double、float、
- 布尔:boolean
- 日期:date
- 对象:object
- index:是否创建索引,默认为true
- analyzer:使用哪种分词器
- properties:该字段的子字段
例如下面的json文档:
{"age":21,"weight":52.1,"isMarried":false,"info":"营养师", "email":"zy@1000phone.com", "score":[99.1, 99.5, 98.9],"name":{"firstName":"云","lastName":"赵"}}
对应的每个字段映射(mapping):
- age:类型为 integer;参与搜索,因此需要index为true;无需分词器
- weight:类型为float;参与搜索,因此需要index为true;无需分词器
- isMarried:类型为boolean;参与搜索,因此需要index为true;无需分词器
- info:类型为字符串,需要分词,因此是text;参与搜索,因此需要index为true;分词器可以用ik_smart
- email:类型为字符串,但是不需要分词,因此是keyword;不参与搜索,因此需要index为false;无需分词器
- score:虽然是数组,但是我们只看元素的类型,类型为float;参与搜索,因此需要index为true;无需分词器
- name:类型为object,需要定义多个子属性
- name.firstName;类型为字符串,但是不需要分词,因此是keyword;参与搜索,因此需要index为true;无需分词器
- name.lastName;类型为字符串,但是不需要分词,因此是keyword;参与搜索,因此需要index为true;无需分词器
创建索引(PUT)
获取索引(GET)
修改索引(PUT)
注意,不能改变原来索引的映射,因为倒排索引构建非常消耗时间,所以不允许修改。
但是可以在原来映射的基础上,新增字段。
删除索引(DELETE)
6、文档操作(DSL)
创建文档(POST)
POST /teacher/_doc/1{"age":18,"info":"营养师帮助人们健康饮食,很好", "email":"zs@1000phone.com","name":{"firstName":"张","lastName":"三"}}POST /teacher/_doc/2 /*指定id创建*/{"age":28,"info":"营养师帮助人们健康饮食", "email":"ww@1000phone.com","name":{"firstName":"王","lastName":"五"}}POST /teacher/_doc /*不指定id创建,会随机自动生成*/{"age":38,"info":"营养师帮助健康饮食", "email":"ls@1000phone.com","name":{"firstName":"李","lastName":"四"}}
删除文档(DELETE)
修改文档(POST)
/*修改--全量修改(当id对应的文档存在,删除原文档,新建现在的文档)*/POST /teacher/_doc/2 /*_doc和新增文档语法一致, 如果该id存在,是更新操作,如果该id不存在,就是新增操作*/{"age":28,"info":"营养师帮助人们健康饮食", "email":"ww@1000phone.com","name":{"firstName":"王","lastName":"五"}}/*修改--增量(部分)修改*/POST /teacher/_update/2 /*_update,在原有文档记录的基础上个,新增新的内容*/{ "doc":{ "email":"ww@1000phone.com" }}
查询文档(GET)
简单查询
全文检索-单字段匹配
/*全文检索 -单字段检索 饮食 --> 饮食,饮,食*/GET /teacher/_search{ "query":{ "match":{ "info":"饮食" } }}
全文检索-多字段匹配
/*全文检索 -多字段检索检索info或者name.lastname中包含的*/GET /teacher/_search{ "query":{ "multi_match":{"query":"饮食","fields":["info","name.lastname"] } }}
精准查询-term
/*精准查询 -term查询term查询中关键词是不会分词的,info中必须包含上述这个词的信息*/GET /teacher/_search{ "query":{ "term":{"info":{"value":"饮食" }} }}
精准查询-range
布尔查询-多条件查询
must
/*查询中info包含饮食,且年龄大于20must必须的,多个条件之间是and关系*/GET /teacher/_search{ "query":{ "bool":{"must":[ { "match":{ "info":"饮食" }},{ "range":{ "age":{ "gte":20} } } ]} }}
shoud
/*查询中info包含饮食,且年龄大于20must可选的,多个条件之间是or关系*/GET /teacher/_search{ "query":{ "bool":{ "should":[ { "match":{ "info":"饮食" } }, { "range":{ "age":{ "gte":20 } } } ] } }}
must_not
/*查询中info包含饮食,但fistname不可以是 李must_not 不允许,对条件进行取反操作,一般用来过滤*/GET /teacher/_search{ "query":{ "bool":{ "must":[ { "match":{ "info":"饮食" } } ], "must_not":[ { "term":{ "name.firstname":{ "value":"李" } } } ] } }}
filter
/*查询中info包含饮食,且年龄大于20filter过滤,在原本数据的基础上进行一些过滤,过滤条件是不参与算分的,所以在进行条件过滤时,使用filter效率会提高*/GET /teacher/_search{ "query":{ "bool":{ "must":[ { "match":{ "info":"饮食" } } ], "filter":[ { "range":{ "age":{ "gte":20 } } } ] } }}
聚合查询
- 分组聚合
相当于: select avg(age),sum(age),... from teacher group by firstname;
查询语句
查询结果
- 不分组全文档聚合
- 不分组带条件聚合
查询结果处理
排序
分页
高亮
7、索引操作(JAVA)
集成es环境
- 引入依赖
- 编写配置
- 注入核心对象,执行操作
创建索引
删除索引
修改索引(没有)
查询索引
8、文档操作(JAVA)
创建文档
/*新增文档*/@Testvoid createDoc() throws IOException { IndexRequest idxReq = new IndexRequest("teacher").id("11");Teacher teacher = new Teacher();teacher.setAge(48);teacher.setInfo("营养师");teacher.setEmail("yy@1000phone.com");Name name = new Name();name.setFirstname("陈");name.setLastname("飞");teacher.setName(name);idxReq.source(JSON.toJSONString(teacher),XContentType.JSON);restHighLevelClient.index(idxReq,RequestOptions.DEFAULT);}
删除文档
修改文档
查询文档
简单查询
- 查询单个文档
)
- 查询所有文档
全文检索-单字段匹配
/*全文检索 -单字段检索GET /teacher/_search*/@Testvoid matchSearch() throws IOException { SearchRequest searchRequest = new SearchRequest("teacher"); searchRequest.source().query(QueryBuilders.matchQuery("info","饮食")); SearchResponse searchResponse = restHighLevelClient.search(searchRequest,RequestOptions.DEFAULT);List teachers = new ArrayList<>();SearchHits hits = response.getHits();for(SearchHit hit : hits){String sourceAsString = hit.getSourceAsString();Teacher teacher = JSON.parseObject(sourceAsString,Teacher.class);teachers.add(teacher);}teachers.forEach(System.out::println);}
全文检索-多字段匹配
/*全文检索 -多字段匹配GET /teacher/_search*/@Testvoid multiMatchSearch() throws IOException { SearchRequest searchRequest = new SearchRequest("teacher"); searchRequest.source().query(QueryBuilders.multiMatchQuery("饮食","info","name.lastname")); SearchResponse searchResponse = restHighLevelClient.search(searchRequest,RequestOptions.DEFAULT);List teachers = new ArrayList<>();SearchHits hits = response.getHits();for(SearchHit hit : hits){String sourceAsString = hit.getSourceAsString();Teacher teacher = JSON.parseObject(sourceAsString,Teacher.class);teachers.add(teacher);}teachers.forEach(System.out::println);}
精准查询-term
/* -精确查询-termGET /teacher/_search*/@Testvoid termSearch() throws IOException { SearchRequest searchRequest = new SearchRequest("teacher"); searchRequest.source().query(QueryBuilders.termQuery("info","饮食")); SearchResponse searchResponse = restHighLevelClient.search(searchRequest,RequestOptions.DEFAULT);List teachers = new ArrayList<>();SearchHits hits = response.getHits();for(SearchHit hit : hits){String sourceAsString = hit.getSourceAsString();Teacher teacher = JSON.parseObject(sourceAsString,Teacher.class);teachers.add(teacher);}teachers.forEach(System.out::println);}
精准查询-range
/* -精确查询-rangeGET /teacher/_search*/@Testvoid rangeSearch() throws IOException { SearchRequest searchRequest = new SearchRequest("teacher"); searchRequest.source().query(QueryBuilders.rangeQuery("age".gte(20))); SearchResponse searchResponse = restHighLevelClient.search(searchRequest,RequestOptions.DEFAULT);List teachers = new ArrayList<>();SearchHits hits = response.getHits();for(SearchHit hit : hits){String sourceAsString = hit.getSourceAsString();Teacher teacher = JSON.parseObject(sourceAsString,Teacher.class);teachers.add(teacher);}teachers.forEach(System.out::println);}
布尔查询-多条件查询
/*布尔条件查询GET /teacher/_search*/@Testvoid matchSearch() throws IOException { SearchRequest searchRequest = new SearchRequest("teacher"); BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();List should = boolQuery.should();should.add(QueryBuilders.rangeQuery("age".gte(20)));should.aad(QueryBuilders.termQuery("name.firstname","李")); searchRequest.source().query(boolQuery); SearchResponse searchResponse = restHighLevelClient.search(searchRequest,RequestOptions.DEFAULT);List teachers = new ArrayList<>();SearchHits hits = response.getHits();for(SearchHit hit : hits){String sourceAsString = hit.getSourceAsString();Teacher teacher = JSON.parseObject(sourceAsString,Teacher.class);teachers.add(teacher);}teachers.forEach(System.out::println);}
聚合查询
- 分组聚合统计
- 全索引聚合统计
- 条件筛选后聚合统计
/*聚合查询 条件过滤后聚合统计GET /teacher/_search*/@Testvoid aggSearch3() throws IOException { SearchRequest searchReq = new SearchRequest("teacher"); //设置查询条件 searchReq.source().query(QueryBuilders.matchQuery("info","饮食"));
查询结果处理
排序
分页
高亮
节点类型
Master节点:管理索引:索引创建、索引删除;DataNode节点中分片管理:分片信息记录、分片划分;不负责数据的写入和检索。这类节点内存可以小一些,但是服务器要稳定
DataNode节点:负责数据的写入和检索,所有DataNode节点没有主从节点的关系。但是节点上会存在主从分片。这类节点要求内存大
客户端节点:不负责任何数据存储操作,这类节点主要用来接收客户端的请求,实现负载均衡
在实际部署es集群时,上述三类节点都需要部署,而且这三类节点要求分开部署
集群中写一条数据的过程
- 数据节点分片含义
- 写一条文档数据
es删除文档机制
es中文档是不可以修改不可删除。当我们在删除文档时,文档数据并不是真的从es中被删掉。有一个惰性删除效果。
在每个segment文件中会维护一个.del文件,当我们删除文档时,会在.del文件中记录这个被删除文档的id。当我们检索数据时,这个被记录的id文档是不会被检索出来的。
当segment大小达到一定程度,为了提升读取数据效率,会对segment进行合并。在合并成新的segment文件时,原本被记录在.del中的数据是不参与合并。此时这个文档数据才会被真正删除。
关键词:
ElasticSearch安装与使用-每日视点
天天信息:全国铁路7月1日起实行新的列车运行图 客、货列车分别增加46列和394列
每日消息!中方在世贸组织提交贸易与环境政策相关提案
家居巨头宜家引入AI:下一代沙发将由人工智能设计
华硕Zenfone 10外观首曝:二代骁龙8小屏旗舰
地表最强RTX 4090!索泰RTX 4090 PGF显卡图赏 世界简讯
广州新规:快递入柜需收件人同意 虚假签收最高可罚三万!
天天信息:长虹发布全球首款多模态交互电视:不管说什么都能听懂
天天速读:南方强降雨频繁有致灾风险 北方高温明起再登场
微动态丨标准IO使用复习
视讯!ABAQUS 模拟过盈配合解决材料选择及公差带设计等问题
全球观察:maven 使用总结2023
人民银行合肥中心支行联合交易商协会举办债务融资工具业务培训|环球滚动
货币宽松抬升经济复苏放缓预期 日债收益率曲线延续趋陡-快讯
每日热闻!英亿万富翁探索泰坦尼克号残骸 现已失联超24小时!
售价超20万元 AMD最贵显卡MI300X诞生:192GB显存史无前例
今日聚焦!雷军武汉大学演讲:36年前教授这句话打通我任督二脉
一天两瓶喝不够:认养一头牛酸/纯奶30盒79.9元抄底(50元立减券)_今日热文
原装进口!雀巢黑咖啡官旗大促:券后每杯仅需0.6元|天天热点
最新快讯!新干县气象台发布雷电黄色预警信号【III级/较重】【2023-06-20】
Apache Superset 身份认证绕过漏洞(CVE-2023-27524)
关于IEnumerable和IQuerable之间的区别 全球通讯
java~二进制补码的用途|世界新消息
中国广电5G悲催的第一年:信号差 销户难
智能驾驶将进入大模型时代!理想发布通勤NOA内测视频 可自主学习
第一款ITX A620终于出现!最便宜的AMD迷你小板 热门
鸡蛋壳难剥是鸡蛋放的久了吗 为什么鸡蛋的壳很难剥 天天新动态
统信UOS系统开发笔记(五):安装QtCreator开发IDE中的中文输入环境Fcitx输入法
强化学习从基础到进阶-常见问题和面试必知必答[2]:马尔科夫决策、贝尔曼方程、动态规划、策略价值迭代
Linux安装MongoDB 4.0.3
当前观点:C#12“实用”的新功能:类型的别名
聚焦廊坊经洽会 | 务实高效办会 彰显河北高水平开放新形象
天天快消息!带宽翻倍更能超!影驰HOF Classic D5-7000内存评测:超至7800MHz仍有余力
年轻人第一款奢侈品?《王者荣耀》联名宝格丽:首款数字珠宝皮肤来了
环球今日讯!比亚迪宋PLUS冠军版一惊喜变化:日系SUV崩溃倒计时开始!
i5/i7该选谁?差距大不大?i5-13490F、i7-13790F深度测试
6月19日老酒价格|飞天次新酒上涨 生肖节气下跌 十七大老酒市场价 当前视点
ChatGPT 初探 - 冰蓝老师 天天微头条
天天新资讯:线性结构中的栈、队列和串是怎么回事?
当前看点!如何将PCM格式的原始音频采样数据编码为MP3格式或AAC格式的音频文件?
全球头条:maven构建报错:Unable to load the mojo 'install' (or one of its required compone
每日聚焦:“降息”靴子落地!
环球观察:《庆余年2》又新增七位女角色,金晨出演叶灵儿
赛力斯SERES 5出海欧洲市场:德国不限速高速飙到225Km/h
颜值超高碾压一众国产!长安启源A07路试:上市就打比亚迪汉
宝马5系首获半自动驾驶认证:变道只需看眼后视镜|世界短讯
100元记3分!杭州对“加塞”司机开罚 网友:请全国推广 消息
广东荔枝价格跌至5年来最低:仅需3、4元一斤
街拍,游走在法律和道德边缘
CSS3有哪些新特性_全球最资讯
全球即时看!数据库三大范式(考试必备)
世界要闻:使用 JMX-Exporter 监控 Kafka 和 Zookeeper
A Practical Methodology, HSM, Handler,Service,Model, for Golang Backend Developm
【环球聚看点】直播源码搭建技术弹幕消息功能的实现
世界观热点:6月20日 11:03分 迈普医学(301033)股价快速拉升
日系还香吗?新一代本田皓影混动/插混上市:19.99万起要打比亚迪_世界报资讯
16.5亿打造!《封神三部曲》第一部7月20上映:预告片发布
全脂/低脂可选:特仑苏纯牛奶2.7元/盒大促(商超6元)
世界快看点丨微软明确不会涉足VR:市场实在太小
红魔8S Pro首发高频版骁龙8 Gen2!170万跑分比骁龙8 Gen3还猛 焦点速讯
【全球新要闻】对在建工程“全面体检”
全球新资讯:关于线性结构中的双向链表如何实现?
NCalc 学习笔记 (六)|天天观热点
也说一说IDEA热部署Web项目最终解决方案,确实大大提高工作效率
每日视点!详解在 Linux 启动时,如何自动执行命令或脚本
最资讯丨失乐园电影迅雷下载 失乐园电影未删减版迅雷下载
债市相对更强,股市估值处相对低位-焦点速递
墓地无人汽车探测到“鬼影”!真相到底是什么?
上海双层敞篷观光巴士将永久退役:已达13年强制报废标准 后继无车
首创双枪充电遥遥领先!比亚迪腾势N7首批量产车下线
高考过后 多所知名大学校长纷纷出镜招生|全球短讯
新买不到一个月特斯拉充电冒烟爆炸 女车主:很失望 产生心理阴影_天天动态
世界观点:菲律宾多方人士反对日本强推核污染水排海:不要污染我们的海洋
springboot~http请求头中如何放中文 当前快报
“泰坦尼克”号残骸观光潜艇氧气仅剩96小时 美加部署飞机搜寻
“全球第一吊”挑战191米最大陆上风力发电机 仅17分钟升至40层楼高
每日短讯:男子长城藏时间胶囊12年多人留纸条 网友直呼奇妙交流:很浪漫
屏摄电影被男子怒斥 影院称屏摄会对胶片有损伤 网友质疑:侮辱智商?-速讯
每日热门:美系开卷国产电动车!别克中大型轿跑E4上市:18.99万起
今日阵雨叨扰,周三周四阳光又将登场,抓紧洗晒! 环球热消息
【读财报】券商资管基金透视:财通、国泰君安资管年内收益领跑 中银证券业绩垫底 视讯
水电大省遭遇“水荒” 四川云南5月水电仍在下降
全球首例!杭州医生用5G帮5000公里外的新疆病人切除肝脏 画面网友惊叹
海口一特斯拉撞飞小车致一死一伤 现场视频被撞车360度旋转、有孩子被甩出-天天时快讯
电瓶车室内充电爆炸 墙都裂了 轮椅老人被吓得拔腿就跑 全球时讯
自救失败!“海航系”公司退市…
读发布!设计与部署稳定的分布式系统(第2版)笔记06_用户_世界观焦点
信息:手机可拆卸电池即将回归:利大于弊 别再被苹果牵着走
环球热资讯!回忆杀!高圆圆晒与贾静雯私照 梦回《倚天屠龙记》周芷若和赵敏
今日看点:早泄能治好吗?
100个物联网项目(基于ESP32)2快速入门
【linux命令】“瑞士军刀”nc的用法简介-天天关注
STL
马云指出淘宝天猫未来三个方向:回归淘宝、回归用户、回归互联网
花了1330万 还有600万只:巴黎向老鼠投降了 要“同居”_全球热点
冷清的618 焦虑的手机厂商:未来只能靠苹果创新了?
跳桥救人小哥引来女网友公开示爱:网友警告切勿炒作 世界热点评
中国男足亚运队1-0胜韩国U24队:孙沁涵抽射建功
美国能单挑全世界吗(美国军力全球第一敢于与世界敌么)
观焦点:登陆百度网盘错误 1550017 百度云同步盘登录失败155010