一、什么是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的更多相关文章

  1. 阿里云服务器Linux系统安装配置ElasticSearch搜索引擎

    近几篇ElasticSearch系列: 1.阿里云服务器Linux系统安装配置ElasticSearch搜索引擎 2.Linux系统中ElasticSearch搜索引擎安装配置Head插件 3.Ela ...

  2. Centos 7安装和配置 ElasticSearch入门小白

    实验环境: 操作系统:Centos 7.5 服务器ip:192.168.1.198 运行用户:root 网络环境:Internet 在企业生产环境有很多服务器的时候.很多业务模块的日志的时候运维人员需 ...

  3. linux 配置 skywalking

    linux安装elasticsearch 一.检测是否已经安装的elasticsearch ps -aux|grep elasticsearch 二.下载elasticsearch (1)下载网站为: ...

  4. linux配置网卡IP地址命令详细介绍及一些常用网络配置命令

    linux配置网卡IP地址命令详细介绍及一些常用网络配置命令2010-- 个评论 收藏 我要投稿 Linux命令行下配置IP地址不像图形界面下那么方 便,完全需要我们手动配置,下面就给大家介绍几种配置 ...

  5. linux配置java环境变量(详细)

    linux配置java环境变量(详细) 本文完全引用自: http://www.cnblogs.com/samcn/archive/2011/03/16/1986248.html 一. 解压安装jdk ...

  6. linux配置hosts

    linux配置hosts linux下配置hosts和windows下其实就是一样的,找到文件在哪里就好 sudo vim /etc/hosts

  7. linux配置java环境变量

    linux配置java环境变量(详细) 一. 解压安装jdk 在shell终端下进入jdk-6u14-linux-i586.bin文件所在目录, 执行命令 ./jdk-6u14-linux-i586. ...

  8. Linux 配置本地yum源

    Linux 配置无网络状态利用yum安装软件 在有网络的情况下安装软件只需一条yum install xxx命令,例如安装gcc只需一条指令:yum install gcc  那么在没有网络的情况下该 ...

  9. Linux配置支持高并发TCP连接(socket最大连接数)

    Linux配置支持高并发TCP连接(socket最大连接数) Linux配置支持高并发TCP连接(socket最大连接数)及优化内核参数 2011-08-09 15:20:58|  分类:LNMP&a ...

随机推荐

  1. hdu-4561 连续最大积( 水题)

    http://acm.hdu.edu.cn/showproblem.php?pid=4561 求连续最大积. 他妈的狗逼思路到底咋说..... 思路是 %&*()*(&--))*)*& ...

  2. 教学日志:javaSE-数组

    一.一维数组 import java.util.Scanner; /* 数组:存储一组相同数据类型的有序集合. 特点: 1.数组中的元素必须是同一种数据类型,可以是基本数据类型,也可以是引用数据类型 ...

  3. PowerDotNet平台化软件架构设计与实现系列(10):文件平台

    很多业务系统少不了需要进行文件管理,比如各种图片.excel.pdf.压缩包等等,为了高度可复用,我们抽象出文件平台,加强对文件进行管理. PowerDotNet文件平台目前支持阿里云OSS.Fast ...

  4. C++中常用的数学函数总结

    我们在C++程序设计的过程中往往会使用到一些数学函数,那么不同的数学运算要用到什么函数哪?大家可以参考我的总结如下: 首先引用到数学函数时一定要记得加函数头文件 #include<cmath&g ...

  5. 浏览器Cookie无法删除问题

    1.写Cookie时添加路径: //写cookies,设置过期时间为30天,并设置path为根目录 function setPathCookie(name,value) { var Days = 30 ...

  6. element message多次点击出现多个提示框,如何显示一个或者在同一位置显示

    /* message在同一位置弹出 */ /* reset elementUI message */ .el-message { top: 20px !important; } .el-message ...

  7. 使用.NET 6开发TodoList应用(13)——实现查询分页

    系列导航及源代码 使用.NET 6开发TodoList应用文章索引 需求 查询中有个非常常见的需求就是后端分页,实现的方式也不算复杂,所以我们本文仅仅演示一个后端查询分页的例子. 目标 实现分页查询返 ...

  8. 在 GitHub 复活 80 年代的游戏代码,它们出自第一本售出百万册的计算机书籍

    今儿我在 GitHub 看到了一个很眼熟的名字和头像,但是第一时间没想起来他是谁.算了先看看是个什么神仙开源项目,竟然能登上今天的 GitHub 趋势榜首. 该项目是把<BASIC Comput ...

  9. Shell 中的 expect 命令

    目录 expect 介绍 expect 安装 expect 语法 自动拷贝文件到远程主机 示例一 示例二 示例三 示例四 expect 介绍 借助 expect 处理交互的命令,可以将交互过程如 ss ...

  10. Linux中安装java JDK

    Linux中安装java JDK 1.下载jdk 下载地址:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads. ...