分布式搜索与分析引擎 ElasticSearch

what is Elasticsearch?

Open Source, Distributed, RESTful Search Engine

Elasticsearch是一个开源的、分布式、RESTful搜索引擎;

2004年,一个叫做Shay Banon的开发者,由于妻子要去伦敦学习厨师,他也跟着去了伦敦,为了给妻子开发一个搜索食谱的搜索引擎,他开始基于Lucene开发发布了他的第一个开源项目,叫做“Compass”,此后好几年该项目没有维护,直到2010年,Shay Banon在工作中需要高性能的、实时的、分布式的搜索,然后他决定重写几年前的Compass库使其成为一个独立的服务并命名为Elasticsearch;

2010年2月,Elasticsearch第一个版本发布;

2012年2月,Elasticsearch 1.0发布,同时成立Elastic公司(创业)

2015年10月,Elasticsearch 2.0发布

2016年10月,Elasticsearch 5.0发布,至少需要jdk1.8

2017年8月,Elasticsearch 6.0发布

2019年8月,Elasticsearch 7.0发布

现在最新版本,Elasticsearch 7.6.2 (2020年5月)

谁在使用Elasticsearch?

1、维基百科,类似百度百科,全文检索;

2、Stack Overflow国外的程序异常问答网站;

3、GitHub 开源代码管理,搜索上千亿行代码;

4、京东到家订单中心

5、携程酒店订单

6、携程机票

7、去哪儿订单中心

8、滴滴打车地图搜索

9、58同城

10、饿了么

11、今日头条

12、360安全

13、小米

14、vivo等

站内搜索(新闻、论坛),IT信息系统搜索(OA,CRM,ERP等)

官网:https://www.elastic.co/

Github:https://github.com/elastic

Elastic search 2018年宣布上市,股票代码为“ESTC”;

搜索无处不在

1、基于数据库搜索

like %关键词%,有诸多不足与局限;

2、搜索引擎框架

解决基于数据库搜索的不足与局限,实现分布式、高可用、高性能搜索;

数据库排行榜

Elasticsearch 属于数据库范畴,可以称为nosql数据库;

https://db-engines.com/en/ranking

Elasticsearch官方认证考试

https://training.elastic.co/exam/elastic-certified-engineer

报名费:$400 (大约2400 - 2800元人民币)

ElasticSearch  VS  Solr

Solr是第一个基于Lucene核心库功能完备的搜索引擎产品,诞生早于Elasticsearch,早期在全文搜索领域,Solr有非常大的优势,在近几年大数据发展时代,Elastic由于其分布式特性,满足了很多PB级大数据的处理需求,特别是后面ELK三大组合的流行,Solr使用量逐渐下跌;

ElasticSearch和Solr均起源于Lucene,Lucene是基于Java语言开发的搜索引擎库类(jar包)创建于1999年,2005年成为Apache顶级开源项目,Lucene具有高性能、但易扩展有局限性,只能单机环境,而且只能基于Java语言开发,其他php、python等不能使用;

类库的接口学习曲线陡峭,原生并不支持水平扩展;

自己开发一个完整的搜索引擎工作量比较大,必须要懂一些搜索引擎原理的人才能用好,所以后来elasticsearch基于lucene进行封装,支持分布式,可水平扩展,降低全文检索的学习曲线,基于http restful api可以被任何编程语言调用;

倒排索引(反向索引)

全文检索:底层是倒排索引;

Elasticsearch 运行环境

下载 https://www.elastic.co/cn/downloads/elasticsearch

解压缩

tar -xvf elasticsearch-7.6.2-linux-x86_64.tar.gz

将目录重命名

mv解压后的文件名  elasticsearch

#配置自己的jdk13

export JAVA_HOME=/usr/local/elasticsearch-7.6.2/jdk

export PATH=$JAVA_HOME/bin:$PATH

#添加jdk判断

if [ -x "$JAVA_HOME/bin/java" ]; then

        JAVA="/opt/jdk-11.0.1/bin/java"

else

        JAVA=`which java`

fi

改变所有文件拥有者

Chown centos:centos -R /usr/local/elasticsearch

进入config文件夹开始配置

编辑jvm.options:

vim jvm.options

默认配置如下:

-Xms1g

-Xmx1g

内存占用太多了,调小一些:

-Xms512m

-Xmx512m

vim elasticsearch.yml

修改数据和日志目录(不修改亦可,默认目录为当前安装目录的data和logs文件夹下):

path.data: /home/新用户名称/elasticsearch/data # 数据目录位置

path.logs: /home/新用户名称/elasticsearch/logs # 日志目录位置

修改绑定的ip:

network.host: 0.0.0.0 #绑定到0.0.0.0,允许任何ip来访问

默认只允许本机访问,修改为0.0.0.0后则可以远程访问

配置信息如下:

属性名及说明

cluster.name:配置elasticsearch的集群名称,默认是elasticsearch,可以修改成一个有意义的名称;

node.name:节点名,es会默认随机指定一个名字,建议指定一个有意义的名称;

path.data:设置索引数据的存储路径,默认是es根目录下的data文件夹,可以设置多个存储路径,用逗号隔开

path.logs:设置日志文件的存储路径,默认是es根目录下的logs文件夹

bootstrap.memory_lock:设置为true可以锁住ES使用的内存,避免内存进行swap

network.host:设置bind_host,设置为0.0.0.0允许外网访问

http.port:设置对外服务的http端口,默认为9200

discovery.seed_hosts:启动此节点时,传递要执行发现的主机的初始列表

cluster.initial_master_nodes:使用一组初始的主节点引导集群

max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]

出现以上报错解决方案:切换到root用户,编辑limits.conf 添加类似如下内容

vi /etc/security/limits.conf 

添加如下内容:

* soft nofile 65536

* hard nofile 131072

* soft nproc 2048

* hard nproc 4096

然后重启linux

[2] : max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

elasticsearch用户拥有的内存权限太小,至少需要262144;

解决办法:

在/etc/sysctl.conf文件最后添加一行

vm.max_map_count=262144

即可永久修改

[3]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured

把discovery.seed_hosts注释打开,写上当前主节点的IP;

启动与关闭

./elasticsearch 前台运行,Ctrl + C 则程序终止;

./elasticsearch -d 后台运行出现started时启动完成

关闭kill pid

Elasticsearch端口9300、92009300是tcp通讯端口,集群ES节点之间通讯使用;

9200是http协议的RESTful接口

elasticsearch-head插件

ealsticsearch只是后端提供各种resulful api,那么怎么直观的看它的信息呢?elasticsearch-head是一款专门针对于elasticsearch的客户端工具,用来展示数据:

elasticsearch-head安装包,下载地址:

https://github.com/mobz/elasticsearch-head

CentOS安装npm

npm: Nodejs下的包管理器;

推荐从此处下载:https://npm.taobao.org/mirrors/可以下载想要的最新node版本

Nodejs最新版本:https://npm.taobao.org/mirrors/node/latest/

下载 

node-v13.13.0-linux-x64.tar.gz

解压:

tar -zxvf node-v13.13.0-linux-x64.tar.gz

mv node-v13.13.0-linux-x64 node-v13.13.0

配置nodejs环境变量

vim /etc/profile

在path中加入 /usr/local/node-v13.13.0/bin即可;

source /etc/profile

验证:

node -v

npm -v

Npm环境准备好了之后,开始安装elasticsearch-head

解压:

unzip elasticsearch-head-master

Cd elasticsearch-head-master

npm install 

(如果执行失败,可以cnpm install,使用cnpm之前需要安装cnpm,通过

npm install -g cnpm --registry=https://registry.npm.taobao.org

该命令安装;

cnpm -v

npm run start(npm run-script start)

可以后台启动:

nohup npm run-script start &

npm -l 显示所有使用帮助信息

然后访问:http://localhost:9100/每个项目的根目录下面,一般都有一个package.json文件,定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称、版本、许可证等元数据);npm install命令根据这个配置文件,自动下载所需的模块,也就是配置项目所需的运行和开发环境;

Head插件访问elasticsearch

要允许跨域:修改elasticsearch.yml文件,添加

http.cors.enabled: true

http.cors.allow-origin: "*"

Kibana运行环境

Kibana的版本要和elasticsearch版本一致;

测试工具其实可以用很多种:postman、curl、head、浏览器插件、kibana;

Github https://github.com/elastic/kibana

下载:https://www.elastic.co/downloads/kibana

下载下来是一个压缩包,解压即可;

启动,进入bin目录 ./kibana

汉化:./config/kibana.yml里面修改i18n.locale: “zh_CN“

kibana也不允许root启动,指定centos用户启动

chown centos:centos -R /usr/local/kibana

./kibana -h命令帮助

启动命令:

./kibana 或者 ./kibana serve

后台启动:

nohup /usr/local/kibana-7.6.2/bin/kibana &

然后访问:http://192.168.194.128:5601

远程访问kibana界面被拒绝

将$KIBANA/config/kibaba.yml下的

server.host: "localhost" 更改为server.host: "0.0.0.0" 即可;


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,125评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,293评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,054评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,077评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,096评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,062评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,988评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,817评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,266评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,486评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,646评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,375评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,974评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,621评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,642评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,538评论 2 352