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 学习笔记(一)相关推荐

  1. elasticSearch学习笔记04-同义词,停用词,拼音,高亮,拼写纠错

    由于elasticSearch版本更新频繁,此笔记适用ES版本为 7.10.2 此笔记摘录自<Elasticsearch搜索引擎构建入门与实战>第一版 文中涉及代码适用于kibana开发工 ...

  2. ElasticSearch 学习笔记:Multi Search

    本文目录 1 简介 2 格式 3 header格式 4 body格式 5 返回格式 6 性能 7 相关文章 1 简介 批量查询接口(Multi Search API)允许在一次请求中执行多个查询操作, ...

  3. ElasticSearch学习笔记-ngram、中文拼音、简繁体搜索记录

    ElasticSearch版本:elasticsearch-7.3.0 ElasticSearch相关插件安装可以参考: ElasticSearch学习笔记-插件安装记录_人生偌只如初见的博客-CSD ...

  4. ElasticSearch学习笔记之十一 Anayle API和IK分词器

    ElasticSearch学习笔记之十一 Anayle API和IK分词器 Anayle API IK分词器 IK分词器版本支持 安装 下载或者编译 选择一 选择二 重启ElasticSearch I ...

  5. ElasticSearch学习笔记之二十一 指标聚合

    ElasticSearch学习笔记之二十一 指标聚合 指标聚合 Avg Aggregation Script Value Script Missing value Weighted Avg Aggre ...

  6. ElasticSearch学习笔记(8)· ES集群的搭建

    目录 十三.集群的实现 1.相关概念 集群(cluster) 节点(node) 分配和复制(shards & replicas) 2.快速搭建集群 3.安装head插件 十三.集群的实现 1. ...

  7. 黑马程序员--分布式搜索ElasticSearch学习笔记

    写在最前 黑马视频地址:https://www.bilibili.com/video/BV1LQ4y127n4/ 想获得最佳的阅读体验,请移步至我的个人博客 SpringCloud学习笔记 消息队列M ...

  8. ElasticSearch 学习笔记

    ElasticSearch (狂神说学习笔记) 1.ES 概述 es是一个开源的高扩展的分布式全文检索引擎, 2.环境安装 环境准备:jdk,你得先安装一个jdk. ES官网: https://www ...

  9. 2022-04-21 ElasticSearch 学习笔记

    Elasticsearch 通用能力 查看文档数量 GET http://192.168.1.243:9200/_count{"query": {"match_all&q ...

  10. ElasticSearch学习笔记记录5【图灵Fox】

    上述代码可以展示动态映射的概念. 学习视频: [2022最新版]ElasticSearch学习教程合集,从ElasticSearch入门到实战几乎包含你需要的所有操作_哔哩哔哩_bilibili

最新文章

  1. 通知 | 2021年度“RONG”奖学金入围答辩名单公布
  2. 创新将会出现在云端,边缘还是其他地方?
  3. WebSocket介绍
  4. Python基础闯关失败总结
  5. iOS UI-自动布局(Autoresizing)
  6. Python绘制图像plt与正余弦正切函数以及散点图DIY基本操作整理Matplotlib 教程
  7. 用c++编程六子棋游戏
  8. 使用 webservice 实现 RPC 调用
  9. 一分钟掌握卡诺图化简法
  10. 常用的数字正则表达式
  11. RGB与十六进制颜色进行互转
  12. python股票量化交易学习目录
  13. qt学习之旅--MinGW编译FFmpeg(32bit)
  14. 用程序实现:给一个不多于4位的正整数,求出它是几位数,逆序输出各位数字?
  15. 贝塞尔Bezier曲线的使用
  16. java如何进行word文档的合并
  17. 最新的全球78707个主要城市数据库,包含经纬度坐标值国家省份
  18. Android FrameWork 学习之Android 系统源码调试
  19. R中 %in% 运算符取反
  20. 磁盘碎片管理Diskeeper或V-locity

热门文章

  1. 逻辑思维训练——假设法
  2. R语言基础题及答案(二)——R语言与统计分析第二章课后习题(汤银才)
  3. 用python写一个纪念日计算工具!有对象的特别注意了!
  4. 李志敏 华中农业大学计算机学院,华中农业大学计算机教育论坛举行
  5. 将视频文件旋转90°的方法
  6. 【9】前端实习:react audio播放音乐组件(详细完整代码)
  7. C++春招实习和秋招面试过程记录
  8. Chart.xkcd图表库
  9. LUAT游戏第一弹---贪吃蛇
  10. win10锁屏界面无法更新