Linux配置 ElasticSearch
一、什么是ElasticSearch?
一、什么是ES?
ES是一个分布式使用RestFul风格的数据搜索引擎,并且ES是构建在Lucene框架之上,也就是说ES也是基于Lucene进行开发的搜索引擎框架
/* ES三大核心:
Index
相当于关系型数据库中的库
Type
相当于关系型数据库中的表
Document
相当于关系型数据库中的表数据
*/ !!!6.ES是基于Lucene开发的,但是Lucene和ES都是搜索引擎框架
什么时候使用ES
什么时候使用Lucene // Lucene和ES的区别是什么?
Lucene只是一个搜索架构,不能直接使用,如果需要使用Lucene则需要自己添加代码来实现搜索模块,也就是说必须要根据公司的业务逻辑来进行编码搜索代码
ES已经把这些代码全部实现了(在Lucene基础上实现的),可以直接使用不再需要添加任何和架构有关的代码 Lucene是当公司的需求比较繁琐,而且ES无法满足的时候才需要自己去编写Lucene的架构代码实现搜索功能,但是学习成本比较高
ES几乎支持了市面上中小型企业的搜索需求,只要公司的业务搜索需求可以用ES来实现,就直接可以使用,不需要再自己对Lucene进行编码,实现起来非常简单,不需要学习成本,直接调用API就可以
二、如何在Linux上配置ElasticSearch?
二、ES的配置?
ElasticSearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。
ES是apache公司的,所以必须要配置jdk
ES不要用最新版,因为ES的最新版必须要求jdk在11版本以上
但是目前市面上所有的公司全部都在jdk8或者以下 1.在linux上配置ES 2配置jdk
也可以从之前配置过的虚拟机中copy过来。。。 3从官网中下载ES 4.解压es的压缩包
tar -zxvf es....
!!!!!从3.4--->3.6不要求手动输入,推荐使用复制粘贴!!!! 5.使用系统用户 修改一些配置。。。 6.增大linux上部署软件的内存和硬盘
以下的配置一定要使用root用户(root的权限是最大的),否则没有权限或者配置不生效
(不要求手写,直接复制即可) //使用root用户 配置 7 vim /etc/security/limits.conf
/*
vim /etc/security/limits.conf */ 配置了某个用户/某些用户对软件的内存和硬盘使用权限
/* * soft nproc 655350
* soft nofile 655350
* hard nproc 655350
* hard nofile 655350
*/
8最大线程数
(ES一般情况是以集群启动,所以目前的用户无法满足ES所要创建的线程,所以需要加大线程数)
这里只是配置系统可容纳最大的线程数,默认系统都有自动保护,不会开启很大的线程数,需要手动修改 vim /etc/sysctl.conf
/*
vim /etc/sysctl.conf vm.max_map_count=262144
*/
9配置用户最大的线程数
vim /etc/security/limits.d/90-nproc.conf
/*
vim /etc/security/limits.d/90-nproc.conf
vim /etc/security/limits.d/90-nproc.conf
vim /etc/security/limits.d/90-nproc.conf
vim /etc/security/limits.d/90-nproc.conf */ 需要把* 1024--->4096
10.使修改永久生效。
sysctl -p
启动 ./elasticsearch 需要切换用户 11创建用户的命令:
/*
adduser 名字
passwd useradd 名字
passwd */ 12.给用户授权的命令:
// chown -R esuser /home/apps/elasticsearch-6.4.0/
/*
chown -R esuser 需要授权的路径 chown -R esuser /home/apps/elasticsearch-6.4.0/
chown -R esuser /home/apps/elasticsearch-xxxx
chown -R esuser /home/apps/elasticsearch-xxxx */ !!!注意一定要给用户授权 ,否则会报错 你如果想要用esuser 用户登录 就需要给他赋予权限。。。。
需要对 esuesr 用户进行授权的操作。。。 13.切换用户 ? 为什么?
1.ES为了自我保护,不让使用root用户启动,因为root用户权限过大,容易修改ES自己配置
/*
su 需要切换的用户名。
su esuser
su haha
su xixi */
14直接启动es
在bin目录
./elasticsearch
报错!!!!
15修改elasticSeach.yml配置文件即可 //在conf
# 修改集群名字(名字随便起,没有什么意义)
cluster.name: my-cluster # 如果是单节点(名字随便起,如果是集群则不能重复)
node.name: node-1 # ES所存放数据的位置(默认data目录不存在,需要自己手动创建 mkdir data cd data pwd 获得路径!)
path.data: /home/apps/elasticsearch-6.4.0/data # ES的日志存放目录(默认已经存在,直接使用即可,不需要创建)
path.logs: /home/apps/elasticsearch-6.4.0/logs # 放开ES的内存锁,让ES直接拥有最大内存使用权
bootstrap.memory_lock: false # centos6中没有CONFIG_SECCOMP_FILTER,但是centos7中有,如果linux系统为centos6则需要关闭过滤
bootstrap.system_call_filter: false # ES的主机地址(一旦配置的是0,就是代表所有的电脑都可以连接(对连接不再造成任何限制))
network.host: 192.168.23.136(0.0.0.0) # ES的默认端口号(./elasticsearch -d(启动的是ES的控制台))
http.port: 9200 # 识别其他的集群host(如果为单节点只需要写一个)
discovery.zen.ping.unicast.hosts: ["192.168.132.141"] 多个的写法。。。
discovery.zen.ping.unicast.hosts: ["192.168.23.136","",""]
16.启动ES
进入bin目录
./elasticsearch
/*
./elasticsearch
./elasticsearch
./elasticaearch */ 3.11.浏览器中检测是否启动成功
使用浏览器访问ip:端口号
http://192.168.132.141:9200/
{
"name" : "node-1",
"cluster_name" : "my-cluster",
"cluster_uuid" : "UmoHkEZzReGQMrrLShhDIQ",
"version" : {
"number" : "6.4.0",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "595516e",
"build_date" : "2018-08-17T23:18:47.308994Z",
"build_snapshot" : false,
"lucene_version" : "7.4.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
} 4. 关闭 elasticsearch 进程?
4.1 查找es 的进程号
// ps -ef |grep elastic ps -ef |grep elastic
kill -9 7167 // kill -9 5866(端口号) 4.2 重启?
在 bin目录下 执行命令
sh elasticsearch -d
五、配置ES所遇到的问题:
1.ES为了自我保护,不让使用root用户启动,因为root用户权限过大,容易修改ES自己配置
创建新的用户并且授权
useradd esuser
passwd esuser ---> 123456 授权:
chown -R esuser /home/apps/elasticsearch 2.因为ES需要消耗非常大的线程数量和内存以及硬盘存储空间
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
[1]:当前启动用户无法对linux系统调动很多的硬盘以及内存存储空间,所以需要自行修改!
vi /etc/security/limits.conf [2]: max number of threads [1024] for user [esuser] is too low, increase to at least [4096]
[2]:当前启动的用户太low了,无法调动很多的线程(默认只能调动1024)
vi /etc/secrity/limits.d/90-nproc.conf [3]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
[3]:需要配置vim /etc/sysctl.conf文件,加大系统默认的总线程数 3.使用创建出新用户启动没有问题,但是当使用root用户启动一次后,再使用新创建的用户启动就有问题
新创建的用户无法使用root用户所创建出的文件
无论是使用哪一个用户启动都会在config文件夹中创建elasticsearch.keystore文件,root用户权限太大,创建的文件其他用户无法使用,所以会报错! 4.java.lang.UnsupportedOperationException: seccomp unavailable: CONFIG_SECCOMP not compiled into kernel, CONFIG_SECCOMP and CONFIG_SECCOMP_FILTER are needed
因为最终CONFIG_SECCOMP系统在centos7中默认会被加载,但是在centos6中没有
需要更换centos的版本
6---->7
修改es的配置文件
在yml配置文件中添加一行数据 bootstrap.system_call_filter: false
六、附带.SQl语句的调优问题。
1.附带.SQl语句的调优问题。
/*
1.尽量避免非操作符的使用 在索引使用NOT ,<>,会导致索引失效,比如a不等于0 a<>0可以修改为 a>0 or a<0 ,NOT修改为a>0或者a>"",避免全表扫描 2.尽量避免使用前导模糊查询,因为前导模糊查询由%,不能利用索引,影响查询效率. 3.避免对查询列的操作 操作包含:数据库函数,计算机表达式,这样会导致全表扫描 4.避免不必要的类型转换 这里的类型转换是潜在的类型转换,比如将字符串与数字类型比较,这样会将字符串进行转换,导致全表扫描. 5.增加查询范围的限制 少使用*, 6.合理使用in与exists exists是循环的方式,外表记录数代表循环的次数,外表的记录少,适合用它. in先执行子查询,子查询去重之后,然后在执行主查询,子查询返回结果越少,越适合这种方式. 如果两张表数据一样大,那么用in和exists差别不大,但是如果不一样大,子查询小的用in,主查询小的用exists. 7.规范所有关键字的书写,select ,update,delete,要么全大写要不全小写
*/
Linux配置 ElasticSearch的更多相关文章
- 阿里云服务器Linux系统安装配置ElasticSearch搜索引擎
近几篇ElasticSearch系列: 1.阿里云服务器Linux系统安装配置ElasticSearch搜索引擎 2.Linux系统中ElasticSearch搜索引擎安装配置Head插件 3.Ela ...
- Centos 7安装和配置 ElasticSearch入门小白
实验环境: 操作系统:Centos 7.5 服务器ip:192.168.1.198 运行用户:root 网络环境:Internet 在企业生产环境有很多服务器的时候.很多业务模块的日志的时候运维人员需 ...
- linux 配置 skywalking
linux安装elasticsearch 一.检测是否已经安装的elasticsearch ps -aux|grep elasticsearch 二.下载elasticsearch (1)下载网站为: ...
- linux配置网卡IP地址命令详细介绍及一些常用网络配置命令
linux配置网卡IP地址命令详细介绍及一些常用网络配置命令2010-- 个评论 收藏 我要投稿 Linux命令行下配置IP地址不像图形界面下那么方 便,完全需要我们手动配置,下面就给大家介绍几种配置 ...
- linux配置java环境变量(详细)
linux配置java环境变量(详细) 本文完全引用自: http://www.cnblogs.com/samcn/archive/2011/03/16/1986248.html 一. 解压安装jdk ...
- linux配置hosts
linux配置hosts linux下配置hosts和windows下其实就是一样的,找到文件在哪里就好 sudo vim /etc/hosts
- linux配置java环境变量
linux配置java环境变量(详细) 一. 解压安装jdk 在shell终端下进入jdk-6u14-linux-i586.bin文件所在目录, 执行命令 ./jdk-6u14-linux-i586. ...
- Linux 配置本地yum源
Linux 配置无网络状态利用yum安装软件 在有网络的情况下安装软件只需一条yum install xxx命令,例如安装gcc只需一条指令:yum install gcc 那么在没有网络的情况下该 ...
- Linux配置支持高并发TCP连接(socket最大连接数)
Linux配置支持高并发TCP连接(socket最大连接数) Linux配置支持高并发TCP连接(socket最大连接数)及优化内核参数 2011-08-09 15:20:58| 分类:LNMP&a ...
随机推荐
- 【LeetCode】222. Count Complete Tree Nodes 解题报告(Python)
[LeetCode]222. Count Complete Tree Nodes 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个 ...
- 【剑指Offer】构建乘积数组 解题报告(Python)
[剑指Offer]构建乘积数组 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interviews 题目 ...
- OA系统中手写签批功能的实现
一.需求背景 OA系统审批中,有对word或者pdf文件源文档在指定的位置可以插入相应的文字,其实就是一个审批的功能,到了指定的人那边,他可以进行签批.这个功能一般来说,是针对于领导方面,对于一个事情 ...
- uniapp上传图片后台返回url后放入image中图片不显示问题
原因:后台返回路径问题后台返回地址斜杠为 \ 我们需要的是 / 如下后台返回的地址导致转义了 修改后可以显示
- Spring练习,定义三个模块,使用<import>标签完成分模块配置开发,模拟实现学生借书和还书的过程,将结束输出到控制台。
相关 知识 >>> 相关 练习 >>> 实现要求: 在图书管理系统中,学生管理模块.书籍管理模块和借还书管理模块等其他模块,相互配合协作,促使系统的运行流畅.定义三 ...
- Android物联网应用程序开发(智慧城市)—— 用户注册界面开发
效果: 布局代码: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns: ...
- SpringBoot集成Actuator健康指示器health
1.说明 本文详细介绍Actuator提供的HealthIndicators, 即健康指示器的配置使用, 利用自动配置的健康指标, 检查正在运行的应用程序的状态, 以及自定义健康指标的方法. 监控软件 ...
- FastStoneCapture屏幕截图软件
1.简介 FastStone Capture(FSCapture)是经典的屏幕截图软件, 可以捕捉全屏图像.活动窗口.任意指定截图形状, 而且还有图像编辑和屏幕录制功能, 还能支持屏幕放大镜和屏幕取色 ...
- tcpdump统计http请求并导出URL文本
tcpdump统计http请求并导出URL文本 tcpdump tcpdump是一个用于截取网络分组,并输出分组内容的工具.凭借强大的功能和灵活的截取策略,使其成为类UNIX系统下用于网络分析和问题排 ...
- CSS基础 表框圆角的基本使用和案例
属性:border-radius:数字+px: 用途:修饰盒子圆角 使用语法格式: 1. border-radius:20px : /* 四个叫同时以半径20px圆角*/ 2. border-radi ...