ElasticSearch7.6.1在Centos7安装

本人安装的ES版本为7.6.1

由于ES不能使用root用户来启动,必须使用普通用户来安装启动。这里我们创建一个普通用户以及定义一些常规目录用于存放我们的数据文件以及安装包等。
创建一个es专门的用户(必须)
# 使用root用户在服务器执行以下命令

先创建组, 再创建用户: 
1)创建 elasticsearch 用户组 [root@localhost ~]# groupadd elasticsearch 
2)创建用户 tlbaiqi 并设置密码 [root@localhost ~]# useradd tlbaiqi [root@localhost ~]# passwd es2021 
3)# 创建es文件夹, 并修改owner为baiqi用户 mkdir -p /usr/local/es
4)用户es 添加到 elasticsearch 用户组 [root@localhost ~]# usermod -G elasticsearch tlbaiqi [root@localhost ~]# chown -R tlbaiqi /usr/local/es/elasticsearch-7.6.1 
5)设置sudo权限 #为了让普通用户有更大的操作权限,我们一般都会给普通用户设置sudo权限,方便普通用户的操作
 #使用root用户执行visudo命令然后为es用户添加权限
 [root@localhost ~]# visudo
 #在root ALL=(ALL) ALL 一行下面
 #添加menghua用户 如下: es2021 ALL=(ALL) ALL 
#添加成功保存后切换到es2021用户操作
 [root@localhost ~]# su es2021
 [es2021@localhost root]$  

创建数据和日志文件夹 


mkdir -p /usr/local/es/elasticsearch-7.6.1/log 
mkdir -p /usr/local/es/elasticsearch-7.6.1/data 

修改es配置文件elasticsearch.yml   


cluster.name: my-es
node.name: node1
path.data: /usr/local/es/elasticsearch-7.6.1/data
path.logs: /usr/local/es/elasticsearch-7.6.1/log
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["10.238.115.170:9200"]
cluster.initial_master_nodes: ["node1"]
bootstrap.system_call_filter: false
bootstrap.memory_lock: false
http.cors.enabled: true
http.cors.allow-origin: "*"

修改jvm.option
修改jvm.option配置文件,调整jvm堆内存大小
使用menghua用户执行以下命令调整jvm堆内存大小,每个人根据自己服务器的内存大小来进行调整。
cd /usr/local/es/elasticsearch-7.6.1/config vim jvm.options
 -Xms2g
 -Xmx2g 

ES因为需要大量的创建索引文件,需要大量的打开系统的文件,所以我们需要解除linux系统当中打开文件最大数目的限制,不然ES启动就会抛错
sudo vi /etc/security/limits.conf
添加如下内容: 注意*不要去掉了
* soft nofile 65536 
* hard nofile 131072 
* soft nproc 2048
 * hard nproc 4096 

修改普通用户可以创建的最大线程数
max number of threads [1024] for user [es] likely too low, increase to at least [4096]原因:无法创建本地线程问题,用户最大可创建线程数太小解决方案:修改90-nproc.conf 配置文件。
Centos6
 sudo vi /etc/security/limits.d/90-nproc.conf
 Centos7
 sudo vi /etc/security/limits.d/20-nproc.conf 
找到如下内容:
* soft nproc 1024#修改为 * soft nproc 4096 

后台启动ES 进入bin目录 ./elasticsearch -d
http://ip:9200/?pretty 

安装Kibana

修改 kibana  
config中的配置
server.port: 5601
server.host: "10.238.115.60" 
elasticsearch.hosts: ["http://10.238.115.60:9200"]

后台启动 nohup ./kibana &

安装IK分词器
切换到menghua用户,并在es的安装目录下/plugins创建ik
mkdir -p /usr/local/es/elasticsearch-7.6.1/plugins/ik 
将下载的ik分词器上传并解压到该目录
cd /usr/local/es/elasticsearch-7.6.1/plugins/ik
unzip elasticsearch-analysis-ik-7.6.1.zip 


重启Elasticsearch,测试分词效果
POST _analyze { "analyzer":"standard", "text":"我爱你中国" } 
POST _analyze { "analyzer": "ik_smart", "text": "中华人民共和国"  } #ik_smart:会做最粗粒度的拆分 
POST _analyze { "analyzer":"ik_max_word", "text":"我爱你中国" } #ik_max_word:会将文本做最细粒度的拆分 
7、指定IK分词器作为默认分词器
ES的默认分词设置是standard,这个在中文分词时就比较尴尬了,会单字拆分,比如我搜索关键词“清华大学”,这时候会按“清”,“华”,“大”,“学”去分词,然后搜出来的都是些“清清的河水”,“中华儿女”,“地大物博”,“学而不思则罔”之类的莫名其妙的结果,这里我们就想把这个分词方式修改一下,于是呢,就想到了ik分词器,有两种ik_smart和ik_max_word。
ik_smart会将“清华大学”整个分为一个词,而ik_max_word会将“清华大学”分为“清华大学”,“清华”和“大学”,按需选其中之一就可以了。
修改默认分词方法(这里修改school_index索引的默认分词为:ik_max_word):
PUT /school_index { "settings" : { "index" : { "analysis.analyzer.default.type": "ik_max_word" } } } 


1 ES数据管理概述
ES是面向文档(document oriented)的,这意味着它可以存储整个对象或文档(document)。
然而它不仅仅是存储,还会索引(index)每个文档的内容使之可以被搜索。
在ES中,你可以对文档(而非成行成列的数据)进行索引、搜索、排序、过滤。
ES使用JSON作为文档序列化格式。
JSON现在已经被大多语言所支持,而且已经成为NoSQL领域的标准格式。
ES存储的一个员工文档的格式示例:
{ "email": "584614151@qq.com", "name": "张三",  "age": 30,  "interests": [ "篮球", "健身" ] } 
2 基本操作
1) 创建索引
格式: PUT /索引名称
举例: PUT /es_db 
2) 查询索引
格式: GET /索引名称
举例: GET /es_db 
3) 删除索引
格式: DELETE /索引名称
举例: DELETE /es_db   
4) 添加文档 


格式: PUT /索引名称/类型/id
举例: PUT /es_db/_doc/1 { "name": "张三", "sex": 1, "age": 25, "address": "北京公园", "remark": "java developer" }
 PUT /es_db/_doc/2 { "name": "李四", "sex": 1, "age": 28, "address": "北京大厦", "remark": "java assistant" } 
PUT /es_db/_doc/3 { "name": "rod", "sex": 0, "age": 26, "address": "北京云山公园", "remark": "php developer" }
 PUT /es_db/_doc/4 { "name": "admin", "sex": 0, "age": 22, "address": "北京天坛", "remark": "python assistant" }
 PUT /es_db/_doc/5 { "name": "tom", "sex": 0, "age": 19, "address": "北京圆明园", "remark": "java architect assistant" } 


5) 修改文档 


格式: PUT /索引名称/类型/id 举例: PUT /es_db/_doc/1 { "name": "白起老师", "sex": 1, "age": 25, "address": "张家界森林公园", "remark": "php developer assistant" } 
注意:POST和PUT都能起到创建/更新的作用
1、需要注意的是==PUT==需要对一个具体的资源进行操作也就是要确定id才能进行==更新/创建,而==POST==是可以针对整个资源集合进行操作的,如果不写id就由ES生成一个唯一id进行==创建==新文档,如果填了id那就针对这个id的文档进行创建/更新
2、PUT只会将json数据都进行替换, POST只会更新相同字段的值
3、PUT与DELETE都是幂等性操作, 即不论操作多少次, 结果都一样


6) 查询文档
格式: GET /索引名称/类型/id 举例: GET /es_db/_doc/1 
7) 删除文档
格式: DELETE /索引名称/类型/id 举例: DELETE /es_db/_doc/1 
3.Restful认识
Restful是一种面向资源的架构风格,可以简单理解为:使用URL定位资源,用HTTP动词(GET,POST,DELETE,PUT)描述操作。 基于Restful API ES和所有客户端的交互都是使用JSON格式的数据.
其他所有程序语言都可以使用RESTful API,通过9200端口的与ES进行通信
GET查询
PUT添加
POST修改
DELE删除
用户做crud
Get http://localhost:8080/employee/1      Get http://localhost:8080/employees put http://localhost:8080/employee { } delete http://localhost:8080/employee/1 Post http://localhost:8080/employee/1 { } 
使用Restful的好处:
透明性,暴露资源存在。
充分利用 HTTP 协议本身语义,不同请求方式进行不同的操作
4.查询操作


4.1 查询当前类型中的所有文档 _search 
格式: GET /索引名称/类型/_search 
举例: GET /es_db/_doc/_search 
SQL:  select * from student 


4.2 条件查询, 如要查询age等于28岁的 _search?q=*:***
格式: GET /索引名称/类型/_search?q=*:*** 
举例: GET /es_db/_doc/_search?q=age:28 
SQL:  select * from student where age = 28 


4.3 范围查询, 如要查询age在25至26岁之间的 _search?q=***[** TO **]  注意: TO 必须为大写
格式: GET /索引名称/类型/_search?q=***[25 TO 26] 
举例: GET /es_db/_doc/_search?q=age[25 TO 26] 
SQL:  select * from student where age between 25 and 26 


4.4 根据多个ID进行批量查询 _mget
格式: GET /索引名称/类型/_mget 
举例: GET /es_db/_doc/_mget  {  "ids":["1","2"]    } 
SQL:  select * from student where id in (1,2) 


4.5 查询年龄小于等于28岁的 :span>
格式: GET /索引名称/类型/_search?q=age:<=** 
举例: GET /es_db/_doc/_search?q=age:<=28 
SQL:  select * from student where age <= 28

 
4.6 查询年龄大于28前的 :>
格式: GET /索引名称/类型/_search?q=age:>** 
举例: GET /es_db/_doc/_search?q=age:>28 
SQL:  select * from student where age > 28 


4.7 分页查询 from=*&size=*;
格式: GET /索引名称/类型/_search?q=age[25 TO 26]&from=0&size=1;
举例: GET /es_db/_doc/_search?q=age[25 TO 26]&from=0&size=1;
SQL:  select * from student where age between 25 and 26 limit 0, 1 


4.8 对查询结果只输出某些字段 _source=字段,字段
格式: GET /索引名称/类型/_search?_source=字段,字段 
举例: GET /es_db/_doc/_search?_source=name,age 
SQL:  select name,age from student 


4.9 对查询结果排序 sort=字段:desc/asc
格式: GET /索引名称/类型/_search?sort=字段 desc 
举例: GET /es_db/_doc/_search?sort=age:desc 
SQL:  select * from student order by age desc 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值