ElasticSearch安装和简单使用

ElasticSearch介绍

安装包和他的工具们(下一篇写了怎么安装和使用)都在这里取
https://download.csdn.net/download/QAQnullPoint/86501011

1 为什么要用ElasticSearch

 关键字:搜索引擎服务器,效率高,可扩展,自定义,分词搜索

2 ElasticSearch介绍

ElasticSearch是一个基于[Lucene]的搜索服务器。它提供了一个基于[RESTful ]web接口的分布式全文搜索引擎。ElasticSearch是用Java语言开发的ElasticSearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

总结一下:

  1. elasticsearch是一个基于Lucene的分布式全文检索服务器
  2. elasticsearch隐藏了Lucene的复杂性,对外提供Restful 接口来操作索引、搜索。

es和solr选择哪个?(solr也是搜索引擎)

  1. 如果你公司现在用的solr可以满足需求就不要换了。
  2. 如果你公司准备进行全文检索项目的开发,建议优先考虑elasticsearch,因为像Github这样大规模的搜索都在用它。

哪个都行。

3 原理

3.1 索引结构
  对原始文档进行拆分,例如mysql的一条数据,作为一个document 存入documents文档中,然后将document 进行单词拆分。
  完事了放到分词列表。组成想新华字典一样的目录,然后通过目录进行搜索

在这里插入图片描述

3.2倒排索引

倒排索引(Inverted index):也常被称为反向索引,倒排索引是从关键字到文档的映射(已知关键字求文档)。
逻辑结构部分是一个倒排索引表,由三部分组成:

1、将搜索的文档最终以Document方式存储起来。

2、将要搜索的文档内容分词,所有不重复的词组成分词列表。

3、每个分词和docment都有关联

在这里插入图片描述
现在,如果我们想搜索 包含quick brown词条的文档:

在这里插入图片描述
两个文档都匹配,但是第一个文档比第二个匹配度更高。如果我们使用仅计算匹配词条数量的简单 相似性算法 ,那么,我们可以说,对于我们查询的相关性来讲,第一个文档比第二个文档更佳。

4 RESTful应用方法

如何使用es?

Elasticsearch提供 RESTful Api接口进行索引、搜索,并且支持多种客户端。

在这里插入图片描述

安装 ElasticSearch

1 环境需求

  1. jdk必须是jdk1.8.0_131以上版本。

  2. ElasticSearch 需要至少4096 的线程池和 262144字节以上空间的虚拟内存才能正常启动,所以需要为虚拟机分配至少1.5G以上的内存

  3. 从5.0开始,ElasticSearch 安全级别提高了,不允许采用root帐号启动

  4. Elasticsearch的插件要求至少centos的内核要3.5以上版本

2 安装ES

2.1 下载

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

2.2 设置虚拟机内存

在这里插入图片描述

2.3 创建用户

从5.0开始,ElasticSearch 安全级别提高了,不允许采用root帐号启动,所以我们要添加一个用户。

  1. 创建elk 用户组
groupadd elk
  1. 创建用户admin
useradd admin
passwd admin
  1. 将admin用户添加到elk组
usermod -G elk admin
  1. 为用户分配权限
chown -R admin:elk /usr/upload
chown -R admin:elk /usr/local
  1. 切换用户
su admin
2.4 安装

将压缩包放到**/usr/upload**目录下,ES是Java开发的应用,解压即安装

tar -zxvf elasticsearch-6.2.3.tar.gz -C /usr/local
2.5 ES目录结构
bin 目录:可执行文件包
config 目录:配置相关目录
lib 目录:ES 需要依赖的 jar 包,ES 自开发的 jar 包
logs 目录:日志文件相关目录
modules 目录:功能模块的存放目录,如aggs、reindex、geoip、xpack、eval
plugins 目录:插件目录包,三方插件或自主开发插件
data 目录:在 ES 启动后,会自动创建的目录,内部保存 ES 运行过程中需要保存的数据。
2.6 配置文件

ES安装目录config中配置文件如下:

​ 1. elasticsearch.yml:用于配置Elasticsearch运行参数

​ 2. jvm.options:用于配置Elasticsearch JVM设置

​ 3. log4j2.properties:用于配置Elasticsearch日志

2.6.1 elasticsearch.yml

新增内容(直接复制粘贴进去,注意修改名字):

cluster.name: 设置集群名字
node.name: 设置节点名字
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9300
discovery.zen.ping.unicast.hosts: ["0.0.0.0:9300", "0.0.0.0:9301"]
path.data: /usr/local/elasticsearch-6.2.3/data
path.logs: /usr/local/elasticsearch-6.2.3/logs
http.cors.enabled: true
http.cors.allow-origin: /.*/

注意一下path.data和path.logs路径配置正确。

常用的配置项如下:

cluster.name:
       配置elasticsearch的集群名称,默认是elasticsearch。建议修改成一个有意义的名称。   
node.name:
      节点名,通常一台物理服务器就是一个节点,es会默认随机指定一个名字,建议指定一个有意义的名称,方便管理一个或多个节点组成一个cluster集群,集群是一个逻辑的概念,节点是物理概念,后边章节会详细介绍。
path.data:
       设置索引数据的存储路径,默认是es_home下的data文件夹,可以设置多个存储路径,用逗号隔开。      
path.logs:
       设置日志文件的存储路径,默认是es_home下的logs文件夹         
network.host:  
       设置绑定主机的ip地址,设置为0.0.0.0表示绑定任何ip,允许外网访问,生产环境建议设置为具体的ip。   
http.port: 9200
       设置对外服务的http端口,默认为9200。      
transport.tcp.port: 9300 
       集群结点之间通信端口      
discovery.zen.ping.unicast.hosts:[“host1:port”, “host2:port”, “…”]  
       设置集群中master节点的初始列表。
discovery.zen.ping.timeout: 3s  
       设置ES自动发现节点连接超时的时间,默认为3秒,如果网络延迟高可设置大些。
http.cors.enabled:
	   是否支持跨域,默认为false
http.cors.allow-origin:
	   当设置允许跨域,默认为*,表示支持所有域名
2.6.2 jvm.options

设置最小及最大的JVM堆内存大小:

在jvm.options中设置 -Xms和-Xmx:

1) 两个值设置为相等

2) 将Xmx 设置为不超过物理内存的一半。

默认内存占用太多了,我们调小一些:

-Xms512m
-Xmx512m
2.6.3 log4j2.properties

日志文件设置,ES使用log4j,注意日志级别的配置。

3 启动ES

3.1 启动和关闭
  1. 启动
./elasticsearch #占用窗口启动
#或
./elasticsearch -d #不占用窗口启动
  1. 关闭
ps-ef|grep elasticsearch

kill -9 pid

4 解决内核问题

在这里插入图片描述
如果出现这个错误就按照下面的方法进行处理,

修改elasticsearch.yml文件,在最下面添加如下配置:

bootstrap.system_call_filter: false

5 解决文件创建权限问题

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

出现上面这个玩意儿的报错就这么整:
使用root用户修改配置文件:

vim /etc/security/limits.conf

追加下面的内容:

* soft nofile 65536
* hard nofile 65536

6 解决线程开启限制问题

[2]: max number of threads [1024] for user [admin] is too low, increase to at least [4096]

出现这个玩意儿的报错就这么处理
使用root用户修改配置:

vim /etc/security/limits.conf:

追加下面的内容:

* soft nproc  4096
* hard nproc  4096

7 解决虚拟内存问题

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

如果报这么个玩意儿 就这么处理:

vim /etc/sysctl.conf

把下面的这个东西找到然后修改成655360

vm.max_map_count=655360

然后执行命令,让sysctl.conf配置生效:

sysctl -p

8 测试

ES 中只要启动了任意一个 ES 应用就是启动了一个 ES的 cluster 集群。默认的 ES集群命名为 elasticsearch。如果启动了多个应用(可以在多个节点或单一节点上启动多个应用),默认的ES 会自动找集群做加入集群的过程。

浏览器访问:http://192.168.204.132:9200

看见下面这段玩意儿就说明已经可以正常使用了:

{
  "name" : "power_shop_node_1", # node name 结点名称。随机分配的结点名称
  "cluster_name" : "power_shop", # cluster name 集群名称。 默认的集群名称
  "cluster_uuid" : "RqHaIiYjSoOyrTGq3ggCOA", # 集群唯一 ID
  "version" : {
    "number" : "6.2.3", #版本号
    "build_hash" : "c59ff00", 
    "build_date" : "2018-03-13T10:06:29.741383Z",#发布日期
    "build_snapshot" : false,#是否快照版本
    "lucene_version" : "7.2.1",#lucene版本号
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值