elasticsearch的教程
简介:
假期自学了elasticsearch搭建与使用,写个博客记录一下
另外我电脑是linux,我懒得再说windows各种配置方法了,不过都是大同小异
1.软件的简介
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
2.软件的下载与安装
(1).下载与安装 elasticsearch-rtf
可以到github去clone下载,不过我下载的是elasticsearch-rtf 版本,因为相对于原版,这个版本集成了一些中文插件,方便我们使用,不用再下载额外的插件了
下载地址:点我
根据readme说明,在终端上输入
git clone git://github.com/medcl/elasticsearch-rtf.git -b master --depth 1
就能下载了,这个当然前提是需要下载git了,我就不具体讲怎么下载和安装git了,这些都是基础
另外这是一个java项目 需要下载 jdk 而且需要jdk8的版本 这里是大于等于8,关于怎么下载及配置jdk也是自己百度吧,然后进行下一步
然后 进入 项目目录/bin/ 执行elasticsearch 这个脚本文件, 可以这样执行./elasticsearch
不出意外的话会报错(如果你没有报错,并且正常运行了可以跳过下面说明)
报错解决
1.中文路径的问题,当时也是坑了我很久,这个项目不要放在中文路径下
2.版本问题需要下载一个较新版本的然后替换对应的jar包中的 class类,具体说明请看这里
当然你要是看不懂的话,可以直接下载我打包好替换完的jar包,点这里(注意这里是5.1.1版本的)
直接替换 lib目录下的 elasticsearch-5.1.1.jar 包就可以了。
然后启动
正常在浏览器打开网址 http://127.0.0.1:9200/ 显示

启动成功!
(2).下载与安装 kibana
kibana现在对于我来说就是测试 RESTful web 接口的,或许其他一写功能我还没用到。注意一个问题就是下载 的版本要与我们的 elasticsearch-rtf 一致,这样会少很多错误,下载地址 这里
第一个组合框选择 kibana 第二个选择对应elasticsearch-rtf的版本
进入 项目目录\bin 运行./kibana
就能启动kibana了
在浏览器中打开 http://localhost:5601/ 查看kibana
(3).下载与安装 elasticsearch-head
我对 elasticsearch-head 的理解是,相当于 mysql 的navicat ,一个数据库的管理吧,也是web端的,或许说像phpmyadmin 更合适,只不过 elasticsearch 用的是自己的一个数据存储集合
下载地址 这里
下载完成后你需要 安装node 在 linux 上
sudo apt-get install npm
就可以下载node了,这条命令会自动下载 npm 也就是node的包管理,也会下载node,另外关于npm换淘宝源的什么,就直接百度吧,然后进入 kibana 的项目目录
npm install
npm run start
具体可看其 github 上的readme 文件说明
启动成功后可以 在浏览器打开 http://localhost:9100
查看运行状态,集群显示未连接(这里是elasticsearch对于安全的考虑,不允许连接)
所以这里我们要修改一下 elasticsearch-rtf 的配置文件 在 项目目录\config\elasticsearch.yml 这个文件
在文件结尾写入以下内容
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-methods: OPTIONS, HEAD, GET, POST, PUT, DELETE
http.cors.allow-headers: "X-Requested-With, Content-Type, Content-Length, X-User"
写入完成后,重新启动 elasticsearch-rtf 然后 看 elasticsearch-head 状态连接成功了

这里有一个 .kibana 的索引 我们不用管它,这个是kibana生成的
至此环境全部配置完成!!
3.RESTful web接口的测试
这个一小节可以说是内容最多的了,也是最重要的,如果你想熟练的使用elasticsearch,那么语法有很多需要去记忆
先说一下大致的测试流程
[在 kibana 写测试接口的语句] -----> [在elasticsearch-head中查看效果]
当然其实在kibana中也可以看到返回的结果,只是没有 elasticsearch-head 中的直观
(1)elasticsearch数据库基础概念
在插入数据前我们需要先理解几个概念方便后面进行
1.1 集群:一个或者多个节点组织在一起
多个服务器集成到一起
1.2 节点:一个节点是集群中的一个服务器,由一个名字来标识,默认是一个随机的漫画角色名字(漫威)
1.3 分片:将索引划分为多分的能力,允许水平分割和扩展容量,多个分片响应请求,提高性能和吞吐量
注:索引相当于关系数据库中的数据库
数据量大的时候,将一个索引分到多个服务器来响应请求
1.4 副本:创建分片的一份或多份的能力,在一个节点失败其余节点可以顶上
相当于数据的备份,防止其中一个节点上数据响应不到,将同一个数据分布到多个服务器上
1.5 elasticsearch与mysql关系型数据库的类比
| elasticsearch | mysql |
|---|---|
| index(索引) | 数据库 |
| type(类型) | 表 |
| documents(文档) | 行 |
| fields | 列 |
1.6 倒排索引:由属性值来确定记录的位置
举个例子:
| 文章 | 内容 |
|---|---|
| 文章A | 好好学习python |
| 文章B | 学习django |
| 文章C | 学习python和django |
在文章插入之前进行分析分词
| 关键词 | 出现的关键词的文章 |
|---|---|
| python | 文章A,文章C |
| django | 文章B |
| 学习 | 文章A,文章B,文章C |
(2)测试第一个接口
首先启动 kibana 这个软件
然后进入这个界面
在这个界面输入
PUT test
{
"settings": {
"index":{
"number_of_shards":5,
"number_of_replicas":1
}
}
}
然后执行这句话,返回的响应是一个json格式的内容
{
"acknowledged": true,
"shards_acknowledged": true
}
说明成功
简单解释一下提交数据这几个值的意思
这个语句是新建一个索引(数据库)
number_of_shards是分片的数量
number_of_replicas是副本的数量
这两个概念前面已经介绍了,通过上面这条语句就新建好了一个索引,然后可以在 elasticsearch-head 中看到这个数据库的信息

可以在 信息 里面查看这个数据库的状态及信息,也可以在 动作 里面进行删除这个索引
下面这些 是一些有用的查询索引的信息 可以输入 试试有什么不同
GET test/_settings
GET _all/_settings
GET .kibana,test/_settings
GET _settings
(3)对已经存在的索引进行结构上的修改
PUT lagou/_settings
{
"number_of_replicas":1
}
执行后我们可以看到返回响应成功,说明修改副本成功
但是如果你想修改切片数量的话就会失败,如果想修改切片那就只能删除索引然后重新建立了
持续更新中。。。。
elasticsearch的教程的更多相关文章
- ELK(elasticsearch+kibana+logstash)搜索引擎(二): elasticsearch基础教程
1.elasticsearch的结构 首先elasticsearch目前的结构为 /index/type/id id对应的就是存储的文档ID,elasticsearch一般将数据以JSON格式存储. ...
- elasticsearch安装教程
目录 1 java8 环境 2 安装elasticsearch 3 安装kibana 4. 单服务器部署多个节点 参考: 1 java8 环境 elasticsearch需要安装java 8 环境,配 ...
- Elasticsearch入门教程(六):Elasticsearch查询(二)
原文:Elasticsearch入门教程(六):Elasticsearch查询(二) 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:h ...
- Elasticsearch入门教程(五):Elasticsearch查询(一)
原文:Elasticsearch入门教程(五):Elasticsearch查询(一) 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:h ...
- Elasticsearch入门教程(四):Elasticsearch文档CURD
原文:Elasticsearch入门教程(四):Elasticsearch文档CURD 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接: ...
- Elasticsearch入门教程(三):Elasticsearch索引&映射
原文:Elasticsearch入门教程(三):Elasticsearch索引&映射 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文 ...
- Elasticsearch入门教程(二):Elasticsearch核心概念
原文:Elasticsearch入门教程(二):Elasticsearch核心概念 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:ht ...
- Elasticsearch入门教程(一):Elasticsearch及插件安装
原文:Elasticsearch入门教程(一):Elasticsearch及插件安装 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:h ...
- 最完整的Elasticsearch 基础教程
翻译:潘飞(tinylambda@gmail.com) 基础概念 Elasticsearch有几个核心概念.从一开始理解这些概念会对整个学习过程有莫大的帮助. 接近实时(NRT) Ela ...
- Elasticsearch基础教程
Reference: http://blog.csdn.net/cnweike/article/details/33736429 基础概念 Elasticsearch有几个核心概念.从一开始理解这些概 ...
随机推荐
- Mysql 实现 向上递归查找父节点并返回树结构
需求:通过mysql 8.0以下版本实现,一个人多角色id,一个角色对应某个节点menu_id,根节点的父节点存储为NULL, 向上递归查找父节点并返回树结构. 如果只有叶子,剔除掉; 如果只有根,只 ...
- 华南理工大学 Python第6章课后测验-2
1.(单选)以下关于语句 a = [1,2,3,(4,5)]的说法中,正确的个数有( )个.(1)a是元组类型 (2)a是列表类型 (3)a有5个元素 (4)a有4个元素(5)a[1] ...
- Jmeter处理响应报文中文乱码
Jmeter在访问发送请求的时候,响应内容如果有中文可能会显示乱码,原因应该是响应页面没有做编码处理,jmeter默认按照ISO-8859-1编码格式进行解析.而我们的响应报文却是utf-8的格式,所 ...
- 如何在Windows中查询证书颁发机构已颁发的证书
有时候需要看一下证书颁发机构已经颁发出去的证书,看看某个用户或者某个计算机获取过的证书有哪些.通常可以在证书颁发机构的MMC中查看.对于测试环境或者刚开始用的CA来说,这样查看挺简单的.但是对于用了一 ...
- Python数据科学手册-Pandas:数值运算方法
Numpy 的基本能力之一是快速对每个元素进行运算 Pandas 继承了Numpy的功能,也实现了一些高效技巧. 对于1元运算,(函数,三角函数)保留索引和列标签 对于2元运算,(加法,乘法),Pan ...
- 8Hello world
Name=input("请输入你的名字:") print('欢迎你',Name)
- VMware安装Win11+WSA子系统和使用教程
VMware安装Win11+WSA子系统和使用教程 作者:Sna1lGo 时间:2022/9/29 下载相关文件: Win11镜像:Download Windows 11 (microsoft.com ...
- NSIS自定义目录选择页面制作之安装…
在nsis制作自定义界面中,目录选择页面个人感觉最为繁琐,因为该界面不仅涉及到界面控件的创建,还要涉及到控件消息传递和状态改变时的回调函数通告. 迅雷界面为例: 其中安装目录中的8盘符,在本机中并不存 ...
- Netty 学习(五):服务端启动核心流程源码说明
Netty 学习(五):服务端启动核心流程源码说明 作者: Grey 原文地址: 博客园:Netty 学习(五):服务端启动核心流程源码说明 CSDN:Netty 学习(五):服务端启动核心流程源码说 ...
- 在js中正则表达式验证小时分钟,将输入的字符串转换为对应的小时和分钟
文章目录 1.预备知识 2.在js中的代码片段 3.测试结果 1.预备知识 splict()方法 Date()的相关方法 setHours()的用法 2.在js中的代码片段 //验证小时和分钟 var ...