ElasticSearch 学习笔记(二)-----Elasticsearch的简介以及应用

版权声明:本文为博主原创文章,欢迎点赞,转载,转载请注明出处。 https://blog.csdn.net/u014534808/article/details/87625536

概述

接上一篇《ElasticSearch 学习笔记(一)-----Lucene的简介以及索引原理》,这一篇我们接着来学习ElasticSearch。我们将从分别介绍ElasticSearch的概念,工作原理,以及简单应用 。

ElasticSearch 简介

ElasticSearch 是一个基于Apache Lucene™的开源搜索引擎。无论是开源开始专有领域,Lucene 可以被认为是迄今为止最先进,性能最好的,功能最全的搜索引擎库。

但是,Lucene 只是一个库,想要使用它,必须使用Java语言将其集成到应用中,更糟糕的是,Lucene非常复杂,你需要深入了解检索的相关知识来理解它是如何工作的。

ElasticSearch 也使用Java开发并使用Lucene 作为其核心来实现所有的索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene 的复杂性。从而让全文搜索变得简单。

基本概念

  • 索引
    含有相同属性的文档集合,如果有关系型数据库模型对比,索引(index)的地位与数据库实例(database)相当。索引存放和读取的基本单元是文档。
  • 文档
    文档是可以索引的基本单位。文档(Document)由一个或者多个域(Field)组成,每个域(Field)由一个域名(此域名非彼域名)或者多个值组成(有多个值的值称为多值域(multi-valued))。从客户端的角度来看,文档(Document)就是 一个JSON对象。
    参数映射(Mapping)
    在 1.1节 认识Apache Lucene 中已经提到,所有的文档(Document)在存储之前都必须经过分析(analyze)流程。用户可以配置输入文本分解成Token的方式;哪些Token应该被过滤掉;或者其它的的处理流程,比如去除HTML标签。此外,ElasticSearch提供的各种特性,比如排序的相关信息。保存上述的配置信息。
  • 文档类型
    每个文档在ElasticSearch中都必须设定它的类型。文档类型使得同一个索引中在存储结构不同文档时,只需要根据文档类型就可以找到对应的参数映射(Mapping)信息。方便文档的存取。
  • 节点
    单独一个ElasticSearch服务器实例称为一个节点。
  • 集群
    集群是多个ElasticSearch节点的集合。
  • 分片索引
    集群能够存储超出单机容量的信息,为了实现这种需求,ElasticSearch把数据分发到多个存储Lucene索引的物理机上。

ElasticSearch 安装

  1. 前提,首先要安装jdk,首先我们使用的是Oracle的JDK,通过java -version
    在这里插入图片描述
  2. 下载安装包
    将ElasticSearch 的安装包下载下来,然后解压。我们可以通过网页下载,然后上传的 CentOS服务器上,也可以通过wget 命令来下载,此处我将安装包放在/root/opt/ 下面。
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.3.tar.gz
  1. 解压安装包。
tar -zxvf elasticsearch-6.4.3.tar.gz  -C /root/opt
  1. 解压之后,转到elasticsearch-6.4.3 文件夹下
    然后执行./bin/elasticsearch 启动elasticsearch,但是在root 用户下执行会报错
    在这里插入图片描述
  2. 所以,我们需要创建一个普通用户
#新增一个用户
useradd estest
#授权
chown -R estest /opt/elasticsearch-*
#切换到这个用户
su estest

在这里插入图片描述
6. 此处我们还需要检查下 该用户是否有java 的访问权限,如果没有,则通过如下命令赋予权限。

su root 
[root@ elasticsearch-6.4.3]# sudo chmod -R 755  /root/
[root@ elasticsearch-6.4.3]# sudo chown -R estest  /root/
[root@ elasticsearch-6.4.3]# sudo chmod -R 755  /root/opt/java/
[root@ elasticsearch-6.4.3]# sudo chown -R estest  /root/opt/java/
  1. 权限赋完之后,我们可以通过java -version查看下
    在这里插入图片描述
  2. 最后我们在 elasticsearch-6.4.3 文件夹下通过./bin/elasticsearch 启动elasticsearch
    如图,没有报错的话,则启动成功。
    在这里插入图片描述
  3. 再开一个命令窗口,我们访问curl 'http://localhost:9200'。如果出现如下结果,这表示elasticsearch启动成功。

在这里插入图片描述

启动elasticsearch 时可能会出现如下两个问题。

  • 问题一、文件描述符太低

在这里插入图片描述
解决办法:
切换到root用户修改/etc/security/limits.conf。

su root
vim /etc/security/limits.conf

在文末加入:

* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096

退出当前用户,从新进入

  • 问题二 、
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

max_map_count 的值是指一个进程最多可用于的内存映射区(memory map areas),在调用malloc会用到,由mmap/mprotect生成。
解决办法
切换到root 用户,修改/etc/sysctl.conf

su root
vim  /etc/sysctl.conf 

加入

vm.max_map_count=655360

使其生效

sysctl -p
  • 有时候启动elasticsearch时候会提示内存不足,然后启动不了,这时候可以改小jvm最小内存
cat config/jvm.options
  • 问题三 、
    有时候启动es时,会提示内存不足,导致启动失败。错误提示如下:
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00007f4152000000, 33554432, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 33554432 bytes for committing reserved memory.
# An error report file with more information is saved as:
# logs/hs_err_pid29872.log

这时候我们可以修改 jvm.options 中的内存设置,通过命令vim config/jvm.options 打开文件,然后修改:
在这里插入图片描述


如果需要外网访问的话,我们还需要在 config/elasticsearch.yml 加入如下配置:
vim config/elasticsearch.yml

network.host: 0.0.0.0
#允许跨域访问,方便后面可视化工具elasticsearch-head
http.cors.enabled: true
http.cors.allow-origin: "*"

在这里插入图片描述
特别说明:如果使用的是阿里云服务器,在需要在安全组中将端口放开
云服务器ECS----->网络和安全----->安全组---->配置规则。

在这里插入图片描述
至此, 我们单机版的ElasticSearch 就安装完成。接下来我们配置一下ElasticSearch 集群。
首先在主节点上添加如下配置:
vim elasticsearch.yml

#添加一下配置
cluster.name: kobe
node.name: master 
node.master: true

然后重启服务
然后,配置从节点1
解压elasticsearch-6.4.3.tar.gz 到elasticsearch-slave1

tar -zxvf elasticsearch-6.4.3.tar.gz  -C /root/opt/elasticsearch-slave1

然后,在从节点1 的elasticsearch.yml中加入如下配置:

##允许跨域访问,方便后面可视化工具elasticsearch-head
http.cors.enabled: true
http.cors.allow-origin: "*"

cluster.name: kobe
node.name: slave1
http.port: 9800
network.host: 0.0.0.0
#设置主动发现主节点地址
discory.zen.ping.unicast.hosts:  ["172.16.148.129"]

其中,172.16.148.129 对应主节点的启动ip。 然后启动从节点,至此我们主从节点都配置完毕。

elasticsearch-head安装

git clone git://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head
npm install  或者cnpm install(需要安装淘宝镜像)
npm run start

启动成功之后访问http://localhost:9100
在这里插入图片描述

总结

本文,我们详细介绍了ElasticSearch的安装,以及一些注意事项。然后说到了主从节点的配置。

猜你喜欢

转载自blog.csdn.net/u014534808/article/details/87625536