一、概述
ElasticSearch是Elastic Stack的核心(ElasticSearch、Kibana、Beats和Logstash)。它可以近乎实时地存储和检索数据;它具有良好的可扩展性,可以扩展到数百台服务器来处理PB级数据。Github、维基百科、音云、Stack Overflow、百度、新浪、阿里等国内外大公司都在使用Elastic Search。
00-1010
一、ElasticSearch下载安装
1.1 下载
Elastic Stack官网:www.elastic.co/cn.在写这篇文章的时候,最新的版本是7.15.1,但是这篇文章用的是7.8.0。在窗口下:
Linux:
tar-zxvf elastic search-7 . 8 . 0-Linux-x86 _ 64 . tar . gz
复制代码linux下安装注意事项:
1.您不能使用root用户运行弹性搜索。解决方案如下:创建一个新用户。
添加用户弹性搜索
passwd弹性搜索
chown -R弹性搜索弹性搜索-7.8.0
弹性研究
复制代码2,操作错误:用户[弹性搜索]的最大线程数[3883]太低,至少增加到[4096]。求解:
vim /etc/security/limits.conf
*软nofile 65536
*硬盘文件65536
*软nproc 5000
*硬nproc 5000
根软nproc 5000
根硬nproc 5000
vim /etc/sysctl.conf
vm.max_map_count=655360
sysctl -p
重启#重启服务器
复制代码的其他问题:
Elasticsearch是用java开发的,7.8 ES版本需要jdk 1.8或以上版本,默认安装包有JDK环境。如果系统配置了JAVA_HOME,则使用系统默认的JDK。如果没有配置为使用自己的JDK,通常建议使用系统配置的JDK。双击启动窗口闪回并通过路径访问跟踪错误。如果是“空间不足”,请修改config/jvm.options配置文件:将jvm的初始内存设置为1G。该值可以设置为与-Xmx相同,以防止每次垃圾收集完成时JVM重新分配内存。将JVM的最大可用内存设置为1G。
-Xms1g -Xmx1g
弹性搜索目录描述:
目录
解释
悲伤的绿茶
可执行脚本目录
配置
配置目录
jdk
内置JDK目录
解放运动
classlib
日志
日志目录
模块
模块目录
插件
插件目录
00-1010进入悲伤绿茶目录
Windows:双击运行弹性搜索
Linux:/弹性搜索运行
在浏览器中,访问弹性搜索所在服务器的9200端口,如下所示:
{
名称' : ' DESKTOP-ILYMONEBL ',
cluster _ name ' : ' elastic search ',
cluster _ uuid ' : ' I _-oifhxtm2brh 0 u2ojwjq ',
版本' : {
编号' : '7.8.0 ',
build_flavor': '默认',
build_type': 'zip ',
build _ hash ' : ' 757314695644 ea 9 a1 DC 2 fecd 26 D1 a 43856725 e 65 ',
build _ date ' : ' 2020-06-14t 19:35:50.234439z ',
build_snapshot': false,
lucene_version': '8.5.1 ',
minimum _ wire _ compatibility _ version ' : ' 6 . 8 . 0 ',
minimum _ index _ compatibility _ version ' : ' 6 . 0 . 0-beta 1 '
},
标语' : '你知道,搜索'
}
复制代码
1.2 运行ElasticSearch
lass="pgc-h-arrow-right">二、ElasticSearch操作1.1 RESTful风格
REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。Web 应用程序最重要的 REST 原则是,客户端和服务器之间的交互在请求之间是无状态的。从客户端到服务器的每个请求都必须包含理解请求所必需的信息。如果服务器在请求之间的任何时间点重启,客户端不会得到通知。此外,无状态请求可以由任何可用服务器回答,这十分适合云计算之类的环境。客户端可以缓存数据以改进性能。
在 REST 样式的 Web 服务中,每个资源都有一个地址。资源本身都是方法调用的目标,方法列表对所有资源都是一样的。这些方法都是标准方法,包括 HTTP GET、POST、PUT、DELETE,还可能包括 HEAD 和 OPTIONS。简单的理解就是,如果想要访问互联网上的资源,就必须向资源所在的服务器发出请求,请求体中必须包含资源的网络路径,以及对资源进行的操作(增删改查)。
可以安装用的比较多的一个软件Postman来使用REST操作ElasticSearch,这里不多赘述关于Postman的安装了。下载地址:www.getpostman.com/apps
ElasticSearch里面的数据格式
Elasticsearch是面向文档型数据库,一条数据在这里就是一个文档。很多人为了方便记忆Elasticsearch里存储文档数据和关系型数据库MySQL存储数据的概念进行一个类比。毕竟大部分的人都是从传统的关系※数据库学到NoSQL的。
ElasticSearch里的Index可以看做一个库,而Types相当于表,Documents则相当于表的行。 这里Types的概念已经被逐渐弱化,Elasticsearch 6.X中,一个index下已经只能包含一个type,Elasticsearch 7.X中, Type的概念已经被删除了。
ElasticSearch中索引的CRUD
1、创建索引 如果创建的索引名称已经存在那么会返回错误信息。
PUT http://127.0.0.1:9200/shopping # 返回结果 { "acknowledged": true, # true操作成功 "shards_acknowledged": true, # 分片操作成功 "index": "shopping" # 索引名称 } 复制代码2、查看索引
查看全部:返回的结果像是一个表格
http://127.0.0.1:9200/_cat/indices?v 复制代码字段说明:
表头
含义
health
当前服务器健康状态:green(集群完整) yellow(单点正常、集群不完整) red(单点不正常)
status
索引打开、关闭状态
index
索引名
uuid
索引统一编号
pri
主分片数量
rep
副本数量
docs.count
可用文档数量
docs.deleted
文档删除状态(逻辑删除)
store.size
主分片和副分片整体占空间大小
pri.store.size
主分片占空间大小
查看单个索引:与上述的创建索引请求的路径一样,GET是读取操作。
GET http://127.0.0.1:9200/shopping 复制代码返回结果:
{ # 索引名称 "shopping": { # 别名 "aliases": {}, # 映射 "mappings": {}, # 设置 "settings": { # 索引 "index": { # 创建时间 "creation_date": "1614265373911", # 主分片数量 "number_of_shards": "1", # 副分片数量 "number_of_replicas": "1", # uuid 唯一标识 "uuid": "eI5wemRERTumxGCc1bAk2A", # 当前索引的版本,每一次修改,版本会随着改变 "version": { "created": "7080099" }, # 缩影名称 "provided_name": "shopping" } } } } 复制代码3、删除索引 删除操作时DELETE请求
DELETE http://127.0.0.1:9200/shopping 复制代码当索引存在时,删除成功返回:
{ "acknowledged": true } ··· 当删除不存在的索引时,会返回异常信息。