简介:

假期自学了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
}

执行后我们可以看到返回响应成功,说明修改副本成功
但是如果你想修改切片数量的话就会失败,如果想修改切片那就只能删除索引然后重新建立了

持续更新中。。。。

最新文章

  1. hello!
  2. 窗口 - dialog - 与后端交互
  3. http://www.cnblogs.com/summers/p/3225375.html
  4. 今天发现新大陆:haml和Emmet
  5. [Freescale]E9学习笔记-LTIB安装配置
  6. VC++入门精通视频教程
  7. [转]ODBC连接ORACLE数据库的设置
  8. 阿里IPO弃港赴美?
  9. jQuery EasyUI 数字框(NumberBox)用法
  10. 网络获取的XML的Pull解析
  11. 中国的UED们
  12. linux 下的启动项
  13. mysql select in 怎么优化
  14. lbs@node(lbs asp blog 移植到 nodejs)
  15. 2018面向对象程序设计(Java)第11周学习指导及要求
  16. 【数据分析知识点】detailed table of contents
  17. 《DSP using MATLAB》Problem 3.17
  18. Java 方法重载与方法重写
  19. 远程计算机或设备将不接受连接,IE无法上网
  20. cdoj1328卿学姐与诡异村庄

热门文章

  1. PLM产品生命周期管理,包含哪些阶段?
  2. 1.Ceph 基础篇 - 存储基础及架构介绍
  3. logstash处理字段样例
  4. 查看docker容器占用的内存
  5. Anaconda安装和卸载+虚拟环境Tensorflow安装以及末尾问题大全(附Anaconda安装包),这一篇就够了!!!
  6. vue基础之MV*和它们之间的不同
  7. BigDecimal的运算——加减乘除
  8. 云计算_OpenStack
  9. 一天五道Java面试题----第七天(mysql索引结构,各自的优劣--------->事务的基本特性和隔离级别)
  10. golang开发一个简单的grpc