Elasticsearch入门

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Elasticsearch入门相关的知识,希望对你有一定的参考价值。

安装Elasticsearch

//下载tar.gz软件包
elasticsearch-6.1.0.tar.gz

//安装
tar xf elasticsearch-6.1.0.tar.gz -C /opt
cd /opt
ln -s elasticsearch-6.1.0 elasticsearch


运行Elasticsearch
默认情况下,Elasticsearch在前台运行,将其日志打印到标准输出(stdout),停止通过Ctrl-C
./bin/elasticsearch

作为守护进程运行
要将Elasticsearch作为守护程序运行,请-d在命令行上指定,并使用以下-p选项将进程ID记录到文件中
./bin/elasticsearch -d -p pid

要关闭Elasticsearch,请杀死pid文件中记录的进程ID 
kill `cat pid`

目录说明

bin	二进制脚本,包括elasticsearch启动节点和elasticsearch-plugin安装插件
config  配置文件,包括elasticsearch.yml, jvm.options
data	在节点上分配的每个索引/分片的数据文件的位置。可以容纳多个地点
logs	日志文件位置
plugins	插件文件的位置。每个插件将被包含在一个子目录中

 

重要的Elasticsearch配置(elasticsearch.yml)

path.data和path.logs

默认配置:
    path:
      logs: /var/log/elasticsearch
      data: /var/data/elasticsearch

在生产环境中几乎肯定的需要更改数据和日志文件夹的位置。如果保留在默认位置,则在Elasticsearch升级到新版本时,这些文件夹被删除的风险很高
path.data可以设置为多条路径,在这种情况下,所有的路径将会被用于存储数据(虽然属于单个碎片文件将全部存储相同的数据路径上)

    path:
      data:
        - /mnt/elasticsearch_1
        - /mnt/elasticsearch_2
        - /mnt/elasticsearch_3

cluster.name

一个集群中,所有节点的cluster.name是相同的。默认名称是elasticsearch,但是我们应该改为集群用途适当的名称

cluster.name:logging-prod

确保不要在不同的环境中重复使用相同的集群名称,否则可能会导致节点加入错误的集群

node.name

默认情况下,Elasticsearch将随机生成的uuid的第一个字符作为节点ID。请注意节点ID是持久的,并且节点重启时不会更改,因此默认节点名称也不会更改
我们应该配置一个更有意义的名字

node.name: prod-data-2

也可以设置为服务器的主机名

node.name: ${HOSTNAME}

bootstrap.memory_lock

要尽量到进程的地址空间锁定到RAM中,防止任何Elasticsearch内存被交换出去

bootstrap.memory_lock:true

network.host

默认情况下,Elasticsearch只绑定到回送地址 - 例如127.0.0.1 和[::1]。这足以在服务器上运行单个开发节点
为了与其他服务器上的节点进行通信并形成群集,您的节点将需要绑定到非环回地址。虽然有许多 网络设置,通常您只需要配置 network.host

network.host:192.168.88.1

discovery.zen.ping.unicast.hosts

开箱即用,没有任何网络配置,Elasticsearch将绑定到可用的环回地址,并将扫描端口9300到9305,尝试连接到运行在同一服务器上的其他节点。这提供了自动集群体验,而无需进行任何配置。
当需要与其他服务器上的节点组成群集时,您必须提供群集中其他节点的种子列表,这些节点可能是活的并且可联系的。这可以指定如下

    discovery.zen.ping.unicast.hosts:
       -  192.168.1.10:9300 
       -  192.168.1.11    #如果未指定 ,端口将默认为transport.profiles.default.port
       -  seeds.mydomain.com   #解析为多个IP地址的主机名将尝试所有解析的地址

discovery.zen.minimum_master_nodes

为防止数据丢失,配置该discovery.zen.minimum_master_nodes设置至关重要, 以便每个符合主节点的节点都知道为了形成群集而必须可见的主节点的最小数量
如果没有这个设置,那么遭受网络故障的集群就有可能将集群分成两个独立的集群 - 分裂的大脑 - 这将导致数据丢失
为了避免脑裂,应将此设置设置为符合主数据节点的法定人数

(master_eligible_nodes / 2)+ 1

换句话说,如果有三个主要节点,则最小主节点应设置为(3 / 2) + 1或2

discovery.zen.minimum_master_nodes:2

JVM堆转储路径

RPM和Debian软件包分发默认配置JVM倾倒在内存不足异常给堆/var/lib/elasticsearch
如果该路径不适合用于存储堆转储,则应修改条目-XX:HeapDumpPath=/var/lib/elasticsearch中 jvm.options到备用路径
如果你指定一个文件名而不是一个目录,JVM将重复使用同一个文件; 这是防止堆转储堆积在堆转储路径中的一种机制。或者,您可以通过操作系统配置计划任务,以删除比配置的时间早的堆转储

请注意,归档分发默认情况下不配置堆转储路径。相反,JVM将默认转储到Elasticsearch进程的工作目录。如果你想配置一个堆转储路径,您应该修改条目#-XX:HeapDumpPath=/heap/dump/path中 jvm.options删除注释标记#,并指定一个实际的路径

 

 

 

 

 

 

 

 

 

 

 

 

 

以上是关于Elasticsearch入门的主要内容,如果未能解决你的问题,请参考以下文章

ElasticSearch学习问题记录——Invalid shift value in prefixCoded bytes (is encoded value really an INT?)(代码片段

Elasticsearch7.8.0版本入门——JavaAPI操作(索引操作)

Elasticsearch7.8.0版本入门——JavaAPI操作(索引操作)

推荐net开发cad入门阅读代码片段

Elasticsearch7.8.0版本入门——JavaAPI操作(文档操作)

elasticsearch入门一-介绍