小工具      在线工具  汉语词典  css  js  c++  java

elasticsearch安装配置及使用

elasticsearch,elasticsearch 额外说明

收录于:40天前

有一个数据库表有点大,查询的条件也有多个,所以我决定用es来缓解查询和其他需求,正好可以重新整理一下安装流程。

下载与安装

需要先安装好jdk
官网直接下载 https://www.elastic.co/guide/en/elasticsearch/reference/5.6/zip-targz.html
版本使用是5.6,现在最新版本是6

更改配置

如果你不是本机装,就要改下ip 的配置,否则其它机器访问不了:
vi config/elasticsearch.yml
以下配置改成 0.0.0.0
network.host: 0.0.0.0

启动与问题处理

es 无法由 root 启动,需要由其他用户启动。

bin/elasticsearch -d

添加-d是为了后台启动。配置文件会自己找到config/elasticsearch.yml。默认端口为 9200。

如果出现以下错误


ERROR: [1] bootstrap checks failed
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
[2018-01-14T19:37:43,195][INFO ][o.e.n.Node               ] [LONqFhr] stopping ...
[2018-01-14T19:37:44,065][INFO ][o.e.n.Node               ] [LONqFhr] stopped
[2018-01-14T19:37:44,065][INFO ][o.e.n.Node               ] [LONqFhr] closing ...
[2018-01-14T19:37:44,125][INFO ][o.e.n.Node               ] [LONqFhr] closed

这是因为打开文件数的配置太低。修改ulimit。请查看文末<如何修改ulimit>章节。

如果出现

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

则如下操作:
切换root账户 vim /etc/sysctl.conf
增加一行 vm.max_map_count=655360
接着执行 sysctl -p

访问es

访问查看:
http://xxxx:9200/
如 curl -XGet http://127.0.0.1:9200
返回像这样:

{
"name" : "LONqFhr",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "nMxOErJrSgmZLVBxDcSBQg",
"version" : {
"number" : "5.6.5",
"build_hash" : "6a37571",
"build_date" : "2017-12-04T07:50:10.466Z",
"build_snapshot" : false,
"lucene_version" : "6.6.1"
},
"tagline" : "You Know, for Search"
}

安装 kibana

Kibana类似于一个查看es的界面系统。安装与es相同版本的kibana

下载
https://www.elastic.co/downloads/past-releases

解析后修改
vi config/kibana.yml

修改以下内容

server.host: "0.0.0.0"
elasticsearch.url: "http://localhost:9200"

直接访问
http://10.202.17.163:5601

开始的时候,会经常使用
dev tools

安装elasticsearch-head

es-head 是es的辅助工具,用来查看es集群状态,索引,数据等的web工具,elasticsearch-head 是和es 不同的进程,启动后,在界面上把es的访问地址输入即可查看es的内容。
https://github.com/mobz/elasticsearch-head

直接下载后 (npm 是node 的一个工具,要安装node,版本在6以上)
npm install
然后npm run start

访问:http://1xx.1xx.51.98:9100/

不过es-head要访问es 需要es做个简单的配置,config/elasticsearch.yml 最后增加,这是让es服务可供跨域的一个配置
增加后重启es:

http.cors.enabled : true
http.cors.allow-origin : "*"

搞es 集群

es集群只需要更改配置文件,设置一个master,其他机器作为slave,指向这个master。

  • 设定master:
    配置追加:
cluster.name: a_cluster
node.name: master
node.master: true 
  • 新建slave:
    重新解压内容后配置追加:
cluster.name: a_cluster
node.name: slave1
network.host: 0.0.0.0
http.port: 9201
discovery.zen.ping.unicast.hosts: ["127.0.0.1"]

cluster.name 是要和master一样的
http.port 是为了 和master的端口不一样
discovery.zen.ping.unicast.hosts 则是找寻 master

如果你想添加另一个slave,可以如下配置:

cluster.name: a_cluster
node.name: slave2
network.host: 0.0.0.0
http.port: 9202
discovery.zen.ping.unicast.hosts: ["127.0.0.1"]

上面是三个es文件夹,启动三个ES服务

es-head可以看到集群状态:

这里写图片描述

es的简单使用:

创建索引:
http://1xx.1xx.51.98:9200/people 用put方法

{
    "settings": {
        "number_of_shards": 3,
        "number_of_replicas": 1
    },
    "mappings":{
        "man": {
            "properties": {
          
                "name": {
                
                    "type":"text"
                }
                "age":{
                    "type":"integer"
                },
                "bithdate": {
                
                    "type": "bithdate",
                    "format":"yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
                    
                }
            }
        }
    }
}

插入数据:
http://1xx.1xx.51.98:9200/people/man  用post方法

{
    "name":"abc3",
    "age":31,
    "bithdate":"1928-03-04"
}

查询数据
http://1xx.1xx.51.98:9200/people/man/_search
{
“query”:{
“match_phrase”:{
“name”:“abc2”
}
}
}

其它资料:

官方文档:
https://www.elastic.co/guide/en/elasticsearch/reference/5.6/index.html
https://coding.imooc.com/learn/list/167.html

错误

重启时出现:

Caused by: java.lang.IllegalStateException: failed to obtain node locks, tried [[/home/comp/es/elasticsearch5/data/a_cluster]] with lock id [0]; maybe these locations are not writable or multiple nodes were started without increasing [node.max_local_storage_nodes] (was [1])?

解决 : ps aux | grep elastic
是进程没有关

ERROR: [1] bootstrap checks failed
[1]: initial heap size [524288000] not equal to maximum heap size [1073741824]; this can cause resize pauses and prevents mlockall from locking the entire heap

调整config/jvm...调整xms和xmx,比如1600m

怎么修改ulimit

1,查看ulimit (这个和用户有关)
ulimit -n

2,修改ulimit
ulimit -n 65536 ( 这个要有root权限,且是只当前会话生效, 如果没有sudo权限,则要看下一步)

3.修改全局ulimit

  • 修改配置
    /etc/security/limits.conf
    如修改成以下,soft是指不硬性即会warn,hard则是硬性规定
*               soft    nofile          66536
*               hard    nofile          66537

再次以用户身份登录,运行ulimit -n 看看是否生效。

这里可以使用su命令返回到当前用户,运行ulimit -n看看是否生效。

如果不生效,则如下:

  • 找到 pam_limits.so
    find /lib -name pam_limits.so

  • 修改vim /etc/pam.d/sshd

[Add the line]
session    required   /lib/security/pam_limits.so
  • 重启下ssh
    service ssh restart

  • 查看是否生效,
    ulimit -n
    看值 是否是 66536

由于网上的内容很多,我在实验过程不清楚是自己客户端的问题,还是什么,再登陆的时候,总是不生效,
第一次,修改完后再service ssh restart ,生效了,但后来再修改/etc/security/limits.conf 的值,和重启,后一直不生效
不过我发现如果通过 su的方式重新进入当前用户,都会直接生效,且这种方法并不需要service ssh restart .

. . .

相关推荐

额外说明

Java多线程访问Synchronized同步方法的八种使用场景

简介 本文将介绍8种同步方法的访问场景,我们来看看着八种情况下,多线程访问同步方法是否还是线程安全的。这些场景是多线程编程中经常遇到的,而且也是面试时高频被问到的问题,所以不管是理论还是实践,这些都是多线程场景必须要掌握的场景。 八种使用场景: 接下来,

额外说明

【Web前端开发】CSS中最常用的11个选择器

文章目录 1.CSS介绍 2.CSS的语言规则 3.CSS的引入方式 4.选择器 4.1 标签选择器 4.2 类选择器 4.3 id选择器 4.4 通配符选择器 4.5 复合选择器 4.5.1 后代选择器 4.5.2 子代选择器 4.6 并集选择器 4.

额外说明

Ruoyi若依漏洞复现总结

Ruoyi若依漏洞复现总结 弱口令 初始密码 CMS 4.6.0 后台RCE 反射+Yaml达到的代码执行 反射Runtime失败 反射ProcessBuilder失败 构造Yaml类 漏洞利用过程 结合Thymeleaf注入的代码执行 漏洞分析 漏洞利

额外说明

rocky9 时间同步

                                                       Rocky时间同步   (2台主机) (第1台主机) 配置网卡 重启 编辑配置文件 将第3行添加#,在第4行添加pool 10.10.70.10

额外说明

向日葵远程控制中的键盘异常问题

本文记录的是ubuntu 20.04 上, 向日葵的最高版本目前只有V 11.0.1.44968(2022.02) 我的被控制和 控制端都是上述环境; 起因,由于我昨天在控制端按下了 win/ 或者是其他的组合键 (具体哪个键盘确实没有注意到); 产生问

额外说明

数据结构与算法-二叉树的操作及应用C语言实现(超详细注释/设计/实验/作业)

目录 一、引言 二、目的 三、环境与设备 四、存储结构 五、函数 六、核心代码 七、调试界面 八、总结 一、引言 感谢宝子们一键三连支持,火速更新中~~ 二叉树(Binary tree)(简写:BT):是指树中节点的度不大于2的有序树,它是一种最简单且最

额外说明

分布式事务框架Seata

分布式事务框架Seata 一、seata是什么 在微服务架构下,由于数据库和应用服务的拆分,导致原本一个事务单元中的多个 DML 操作,变成了跨进程或者跨数据库的多个事务单元的多个 DML 操作, 而传统的数据库事务无法解决这类的问题,所以就引出了分布式

额外说明

SpringBoot 使用【druid-spring-boot-starter】集成 druid 监控数据库

What Druid是一个JDBC组件,它包括三部分: • DruidDriver 代理Driver,能够提供基于Filter-Chain模式的插件体系。 • DruidDataSource 高效可管理的数据库连接池。 • SQLParser Why •

额外说明

Windows系统缺少tdh.dll文件导致系统错误问题

其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个tdh.dll文件(挑选合适

ads via 小工具