全文搜索引擎Elasticsearch6.x 入门

本文介绍了全文搜索引擎Elasticsearch(ES)的基础知识,包括索引、类型、文档、映射等核心概念。阐述了ES如何利用Lucene实现分布式搜索,并详细讲解了ES集群的组件如集群、节点和分片的工作原理。同时,文章还涵盖了ES的安装步骤和环境配置,以及后续的简单操作和入门实战案例。
摘要由CSDN通过智能技术生成

   全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。


   Elastic 的底层是开源的Lucene。Elastic提供了REST API的操作接口。是Lucene的扩展。底层依旧是索引,但是可以把大索引切成n片,放到不同的节点,所以就实现了分布式。也就理所当然的是读写负载均衡。此外,他还是一个分布式实时文档存储,其中每个field可被搜索。 ES 可以自动将海量数据分布到多台服务器上去存储和检索海量数据。可以在秒级别在每台服务器上分析数据。

   下面简单的介绍一下Elastic并且从零开始搭建一个Elastic。

一、简介

    基本组件: (1).索引(index):文档容器,类似于关系型数据库中的库。索引名必须是小写字母。

(2).类型(type):类型是索引内部的逻辑分区。其意义完全取决与用户需求,一个索引内部可定义多个类型。类似于关系型数据库中的表结构,字段。

(3).文档(document):文档是Lucene索引和搜索的原子单位。它包含多个域。基于JSON格式存储。每个域的格式类似于字典

(4).映射(mapping):原始内容存储为文档之前的分析,映射就是定义此映射过程该如何实现。(例如切词,过滤)

   集群组件:(1)Cluster:ES的集群标识为集群名称。默认为“elasticsearch”,节点靠此名字决定加入到哪一个集群中。一个节点只能属于一个集群。

 (2).Node:运行单个ES实例的主机。节点的标识靠节点名。

 (3).Shard:将索引切割成为的物理存储组件,但每一个shared都是一个独立且完整的索引,创建索引时,ES默认分割为5个shard。用户也可以按需自定义,创建完成后不可修改。shard有两种,primary和replica。用于负载均衡。

ES Cluster启动过程。通过多播(或单播)在9300/tcp查找同一集群中的其他节点,并建立通信。集群中所有节点会选举出一个主节点负责管理整个集群状态。以及在集群范围内决定shared的分布。

二、安装

     安装环境 Linux centos7.3 3台. 直接就安装成集群。Elastic 的安装需要Java环境。不会配置Java环境的请参考这篇文章

    这里也简单的演示一下JAVA的环境配置。首先准备好jdk的tar包。下载网页

# mkdir /usr/java
# tar xf jdk-8u151-linux-i586.tar.gz -C /usr/java
# vim /etc/profile
JAVA_HOME=/usr/java/jdk1.8.0_151
export JRE_HOME=/usr/java/jdk1.8.0_151/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
# update-alternatives --install /usr/bin/java java /usr/java/jdk1.8.0_151/bin/java 300
# update-alternatives --install /usr/bin/javac javac /usr/java/jdk1.8.0_151/bin/javac 300
# update-alternatives --config java

共有 3 个程序提供“java”。

  选择    命令
-----------------------------------------------
*+ 1           /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
   2           /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java
   3           /usr/java/jdk1.8.0_151/bin/java

按 Enter 来保存当前选择[+],或键入选择号码:3

    若出现 -bash: /usr/java/jdk1.8.0_151/bin/java: /lib/ld-linux.so.2: bad ELF interpreter: 没有那个文件或目录  这个错误, 则执行 yum install glibc.i686  即可。

至此,安装成功jdk。下来安装Elasticsearch。下载页面

    下载好rpm包。执行 

# rpm -ivh elasticsearch-6.1.1.rpm 
warning: elasticsearch-6.1.1.rpm: Header V4 RSA/SHA512 Signature, key ID d88e42b4: NOKEY
Preparing...                ########################################### [100%]
Creating elasticsearch group... OK
Creating elasticsearch user... OK
   1:elasticsearch          ########################################### [100%]
### NOT starting on installation, please execute the following statements to configure elasticsearch service to start automatically using chkconfig
 sudo chkconfig --add elasticsearch
### You can start elasticsearch service by executing
 sudo service elasticsearch start
启动Elasticsearch。
# systemctl start elasticsearch
接下来修改配置文件。

# vim /etc/elasticsearch/elasticsearch.yml

cluster.name:  my-elastic
# 集群名字,相同集群名字的节点会放到同一个集群下

node.name: "node-1"
# 节点名字

discovery.zen.minimum_master_nodes: 2
#指定集群中的节点中有几个有master资格的节点。
#对于大集群可以写3个以上。

discovery.zen.ping.timeout: 3s
#默认是3s,这是设置集群中自动发现其它节点时ping连接超时时间

discovery.zen.ping.multicast.enabled: false
#设置是否打开多播发现节点,默认是true。

network.bind_host: 192.168.40.129
#设置绑定的ip地址,这是我的虚拟机的IP。

network.publish_host: 192.168.40.129
#设置其它节点和该节点交互的ip地址。

network.host: 0.0.0.0
#同时设置bind_host和publish_host上面两个参数。

transport.tcp.port: 9300
#设置参与集群的端口

http.port: 9200
#接收请求端口

#discovery.zen.ping.unicast.hosts:["节点1的 ip","节点2 的ip","节点3的ip"]
#指明集群中其它可能为master的节点ip,以防es启动后发现不了集群中的其他节点。
启动后,发现9200,9300端口处于监听状态。 如果发现,network.host不能绑定到0.0.0.0上。(一启动就出错&
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值