ElasticSearch 学习笔记(一)
ElasticSearch
- ElasticSearch 启动服务器
- 什么是 ElasticSearch
- 关于JDK版本
- 启动/验证
- ElasticSearch 工具-Kibana
- 什么是Kibana
- 启动/验证/测试
- ElasticSearch Kibana-索引管理
- 概念
- Restful 风格
- 增加索引
- 查询
- 删除
- ElasticSearch 中文分词器
- 分词器概念
- 安装中文分词器
- 重启 ElasticSearch
- 测试中文分词效果
- ElasticSearch Kibana-文档管理
- 增加文档
- 获取文档
- 修改文档1
- 修改文档2
- 删除文档
- ElasticSearch Kibana-批量导入
- 批量导入两条数据
- ElasticSearch curl-批量导入
- curl.exe
- 14万条数据
- 执行导入
- 导入结束截屏
- ElasticSearch Kibana-查询操作
- 准备数据
- 查询所有
- id 倒排序
- 只返回部分字段
- 条件查询
- 分页查询
- ElasticSearch Kibana-聚合操作
- 统计数据
- ElasticSearch JavaAPI
- Java API
ElasticSearch 启动服务器
什么是 ElasticSearch
Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。
关于JDK版本
至少使用JDK8版本,请下载JDK8或者更高版本:JDK官网
启动/验证
下载Elasticsearch,安装后点击\bin\elasticsearch.bat运行。
输入地址:
http://127.0.0.1:9200/
返回如图所示的json代码,就表示启动成功了。
里面给出了服务器的基本信息,如版本号是6.2.2, 底层用的lucene版本号是7.2.1 等等
注: 不同浏览器对于json代码的默认渲染方式是不一样的,截图看到的是火狐的渲染方式,其他浏览器可能是下载一个文件,里面呢内容是这些,不过都表示启动成功了。
ElasticSearch 工具-Kibana
什么是Kibana
您可以使用Kibana对Elasticsearch索引中的数据进行搜索,查看,交互操作。您可以很方便的利用图表,表格和地图对数据进行多元化的分析和呈现。
它很简单,基于浏览器的界面可以快速创建和共享动态数据仪表板来追踪Elasticsearch的实时数据变化。
建造Kibana非常简单。您可以分分钟完成Kibana的安装并开始探索Elasticsearch的索引数据—没有代码,不需要额外的基础设施。
启动/验证/测试
下载Kibana,安装后点击\bin\kibana.bat运行。
输入地址:
http://localhost:5601/app/kibana#/dev_tools/console?_g=()
就能打开当前的开发工具 Dev Tools 界面
在控制台里输入:
GET /_cat/health?v
然后点击绿色箭头进行运行,就可以看到右侧出现查询结果
GET /_cat/health?v 这个命令用来查看服务器状态(健康度),green 表示一切OK
ElasticSearch Kibana-索引管理
概念
索引相当于就是一个数据库服务器上的某个数据库,所以索引也可以看成是Elastic Search里的某个数据库
Restful 风格
接下来就要进行管理索引的工作了,管理无非就是增删改查,即 CRUD。
在使用Restful风格之前,进行所以管理需要这样的访问地址: add,delete,update,get 等不同的访问地址来表示不同的业务请求。
但是使用Restful 风格,就通过提交不同的method 来表示 CRUD:
PUT 表示增加
GET 表示获取
DELETE 表示删除
POST表示更新
注: Method 是http请求里的一个属性,常用的属性值是post和get。
增加索引
运行如下命令:
PUT /how2java?pretty
返回:
{"acknowledged": true,"shards_acknowledged": true,"index": "how2java"
}
查询
运行如下命令:
GET /_cat/indices?v
可以观察到新建立的索引
删除
运行如下命令:
DELETE /how2java?pretty
再运行
GET /_cat/indices?v
可以观察到索引how2java被删除了,右侧一个索引也看不到了
ElasticSearch 中文分词器
分词器概念
分词器的作用是将一串字符串改为“词”的列表,下面以“中华人民共和国”这个输入为例进行讲解:
对“大学生活”这句话做分词,通常来说,一个分词器会分三步来实现:
(1)找到“中华人民共和国”这句话中的全部词做为一个集合,即:[中华人民共和国、中华人民、中华、华人、人民共和国、人民、共和国、共和、国]
(2)在第一步中得到的集合中找到所有能组合成“大学生活”这句话的子集
(3)在第二步中产生的所有子集中挑选一个最有可能的作为最终的分词结果。
安装中文分词器
ElasticSearch 默认是没有中文分词器的,需要额外安装。
重启 ElasticSearch
安装插件后要重启,否则无法生效。
重启很简单。。。就是右上角X掉,然后重新运行elasticsearch.bat
测试中文分词效果
在 kibana 控制台中输入如下命令:
打开 kibana控制台:
http://localhost:5601/app/kibana#/dev_tools/console?_g=()
运行如下命令:
GET _analyze
{"analyzer":"ik_max_word","text":"中华人民共和国"
}
返回如图所示的分词效果
注: 要运行kibana控制台,需要先安装kibana
ElasticSearch Kibana-文档管理
增加文档
运行如下命令:
PUT /how2java/product/1?pretty
{"name": "蜡烛"
}
注: 其中的product在elastic search里是type的概念,相当于数据库里的表,这里就相当于向 product 表里插入了一条数据
获取文档
运行如下命令:
GET /how2java/product/1?pretty
解释:
_index 表示哪个索引
_type 表示哪个表
_id 主键
_version 版本
found 数据存在
_source: 数据内容
修改文档1
修改两种方式,第一种还是用PUT,PUT本来用来做增加的,但是当输入的id已经存在的时候,就自动变成修改功能了
运行如下命令:
PUT /how2java/product/1?pretty
{"name": "红色蜡烛"
}
修改文档2
修改两种方式,第二种使用 POST,这才是正规的修改,其实和修改文档1 效果一样的,爱用哪种用哪种
运行如下命令:
POST /how2java/product/1/_update?pretty
{"doc": { "name": "蓝色蜡烛" }
}
留意其中的版本已经是3了,第一次创建的时候是1,第一次修改是2,现在修改是3
删除文档
运行如下命令:
DELETE /how2java/product/1?pretty
ElasticSearch Kibana-批量导入
批量导入两条数据
运行如下命令:
POST _bulk
{"index":{"_index":"how2java","_type":"product","_id":10001}}
{"code":"540785126782","price":398,"name":"房屋卫士自流平美缝剂瓷砖地砖专用双组份真瓷胶防水填缝剂镏金色","place":"上海","category":"品质建材"}
{"index":{"_index":"how2java","_type":"product","_id":10002}}
{"code":"24727352473","price":21.799999237060547,"name":"艾瑞泽手工大号小号调温热熔胶枪玻璃胶枪硅胶条热溶胶棒20W-100W","place":"山东青岛","category":"品质建材"}
{"index":{"_index":"how2java","_type":"product","_id":10003}}
ElasticSearch curl-批量导入
curl.exe
curl是一个工具,可以模拟浏览器向服务器提交数据
14万条数据
接下来要批量导入14万条数据到 elastic search里
然后把 curl.exe 和 解压出来的 products.json 放在同一个目录下,一定是要同一个目录下哦,不然使用后面的命令行就不能成功。
执行导入
确认curl.exe和products.json 在同一个目录后,假设他们所在目录是:
C:\Users\X7TI\Downloads\curl
在cmd中,运行如下命令:
curl -H “Content-Type: application/json” -XPOST “localhost:9200/how2java/product/_bulk?refresh” --data-binary “@products.json”
温馨提示:数量较大,运行比较花时间,请耐心等待
导入结束截屏
导入结束之后,就会看到如图所示的结果,控制台会把14万条记录都打印出来,所以看不完整,但是这表示导入成功了
ElasticSearch Kibana-查询操作
准备数据
请先按照curl-批量导入的做法,把14万条数据插入
查询所有
运行如下命令:
GET /how2java/_search
{"query": { "match_all": {} }
}
返回如图所示显示一共有147939条数据.
注: 要运行kibana控制台,需要先安装kibana: 下载kibana并启动
注: 默认查询显示10条数据,欲查询更多数据请参考后面的 分页查询
id 倒排序
运行如下命令:
GET /how2java/_search
{"query": { "match_all": {} },"sort": [{ "_id": "desc" }]
}
只返回部分字段
运行如下命令:
GET /how2java/_search
{"query": { "match_all": {} },"_source": ["name","price"]
}
条件查询
运行如下命令:
GET /how2java/_search
{"query": { "match": { "name": "时尚连衣裙" } }
}
分页查询
运行如下命令:
GET /how2java/_search
{"query": { "match_all": {} },"from": 1,"size": 3,"sort": { "_id": { "order": "desc" } }
}
ElasticSearch Kibana-聚合操作
统计数据
运行如下命令:
GET /how2java/_search
{"size": 0,"aggs": {"group_by_place": {"terms": {"field": "place.keyword","size": 3}}}
}
相当于sql语句:
select count(*),place from product group by place limit 0,3
返回如图所示显示统计了3条数据。
注: 第一个size:0表示 不用显示每条数据,第二个size:3表示分组数据显示3条。
ElasticSearch JavaAPI
Java API
以上内容都是使用kibana 这个工具实现的。 可是实际开发中,肯定会通过编程语言来实现,那么接下来的教程就会讲解如何通过 Java api实现对Elastic Search的管理
ElasticSearch 学习笔记(一)相关推荐
- elasticSearch学习笔记04-同义词,停用词,拼音,高亮,拼写纠错
由于elasticSearch版本更新频繁,此笔记适用ES版本为 7.10.2 此笔记摘录自<Elasticsearch搜索引擎构建入门与实战>第一版 文中涉及代码适用于kibana开发工 ...
- ElasticSearch 学习笔记:Multi Search
本文目录 1 简介 2 格式 3 header格式 4 body格式 5 返回格式 6 性能 7 相关文章 1 简介 批量查询接口(Multi Search API)允许在一次请求中执行多个查询操作, ...
- ElasticSearch学习笔记-ngram、中文拼音、简繁体搜索记录
ElasticSearch版本:elasticsearch-7.3.0 ElasticSearch相关插件安装可以参考: ElasticSearch学习笔记-插件安装记录_人生偌只如初见的博客-CSD ...
- ElasticSearch学习笔记之十一 Anayle API和IK分词器
ElasticSearch学习笔记之十一 Anayle API和IK分词器 Anayle API IK分词器 IK分词器版本支持 安装 下载或者编译 选择一 选择二 重启ElasticSearch I ...
- ElasticSearch学习笔记之二十一 指标聚合
ElasticSearch学习笔记之二十一 指标聚合 指标聚合 Avg Aggregation Script Value Script Missing value Weighted Avg Aggre ...
- ElasticSearch学习笔记(8)· ES集群的搭建
目录 十三.集群的实现 1.相关概念 集群(cluster) 节点(node) 分配和复制(shards & replicas) 2.快速搭建集群 3.安装head插件 十三.集群的实现 1. ...
- 黑马程序员--分布式搜索ElasticSearch学习笔记
写在最前 黑马视频地址:https://www.bilibili.com/video/BV1LQ4y127n4/ 想获得最佳的阅读体验,请移步至我的个人博客 SpringCloud学习笔记 消息队列M ...
- ElasticSearch 学习笔记
ElasticSearch (狂神说学习笔记) 1.ES 概述 es是一个开源的高扩展的分布式全文检索引擎, 2.环境安装 环境准备:jdk,你得先安装一个jdk. ES官网: https://www ...
- 2022-04-21 ElasticSearch 学习笔记
Elasticsearch 通用能力 查看文档数量 GET http://192.168.1.243:9200/_count{"query": {"match_all&q ...
- ElasticSearch学习笔记记录5【图灵Fox】
上述代码可以展示动态映射的概念. 学习视频: [2022最新版]ElasticSearch学习教程合集,从ElasticSearch入门到实战几乎包含你需要的所有操作_哔哩哔哩_bilibili
最新文章
- 通知 | 2021年度“RONG”奖学金入围答辩名单公布
- 创新将会出现在云端,边缘还是其他地方?
- WebSocket介绍
- Python基础闯关失败总结
- iOS UI-自动布局(Autoresizing)
- Python绘制图像plt与正余弦正切函数以及散点图DIY基本操作整理Matplotlib 教程
- 用c++编程六子棋游戏
- 使用 webservice 实现 RPC 调用
- 一分钟掌握卡诺图化简法
- 常用的数字正则表达式
- RGB与十六进制颜色进行互转
- python股票量化交易学习目录
- qt学习之旅--MinGW编译FFmpeg(32bit)
- 用程序实现:给一个不多于4位的正整数,求出它是几位数,逆序输出各位数字?
- 贝塞尔Bezier曲线的使用
- java如何进行word文档的合并
- 最新的全球78707个主要城市数据库,包含经纬度坐标值国家省份
- Android FrameWork 学习之Android 系统源码调试
- R中 %in% 运算符取反
- 磁盘碎片管理Diskeeper或V-locity