ElasticSearch 2 (2) - Setup
ElasticSearch 2.1.1 (2) - Setup
Installation
Elasticsearch can be started using:
$ bin/elasticsearch
Running as a daemon
$ bin/elasticsearch -d
PID
The PID is written to a file called pid.
$ bin/elasticsearch -d -p pid
The kill command sends a TERM signal to the PID stored in the pid file.
$ kill `cat pid`
Another feature is the ability to pass -D or getopt long style configuration parameters directly to the script. When set, all override anything set using either JAVA_OPTS or ES_JAVA_OPTS. For example:
$ bin/elasticsearch -Des.index.refresh_interval=5s --node.name=my-node
Configuration
Environment Variables
JAVA_OPTS
ES_JAVA_OPTS > JAVA_OPTS
ES_HEAP_SIZE
ES_MIN_MEM (defaults to 256m)
ES_MAX_MEM (defaults to 1g)
It is recommended to set the min and max memory to the SAME value, and enable mlockall.
System Configuration
File Descriptors
Setting it to 32k or even 64k is recommended.
-Des.max-open-files=true
max_file_descriptors
curl localhost:9200/_nodes/stats/process?pretty
Virtual memory
Elasticsearch uses a hybrid mmapfs / niofs directory by default to store its indices. The default operating system limits on mmap counts is likely to be too low, which may result in out of memory exceptions. On Linux, you can increase the limits by running the following command as root:
sysctl -w vm.max_map_count=262144
To set this value permanently, update the vm.max_map_count setting in /etc/sysctl.conf.
Memory Settings
Most operating systems try to use as much memory as possible for file system caches and eagerly swap out unused application memory, possibly resulting in the elasticsearch process being swapped. Swapping is very bad for performance and for node stability, so it should be avoided at all costs.
Disable swap
Box -
ES_HEAP_SIZE
Linux -
Temporarily
sudo swapoff -a
Permanently (comment out swap)
/etc/fstab
Windows -
System Properties → Advanced → Performance → Advanced → Virtual memory
Configure swappiness
This reduces the kernel’s tendency to swap and should not lead to swapping under normal circumstances, while still allowing the whole system to swap in emergency conditions.
vm.swappiness
From kernel version 3.5-rc1 and above, a swappiness of 0 will cause the OOM killer to kill the process instead of allowing swapping. You will need to set swappiness to 1 to still allow swapping in emergencies.
mlockall
Linux - mlockall
bootstrap.mlockall: true
Windows - VirtualLock
Check:
curl http://localhost:9200/_nodes/process?pretty
Grant(as root):
$ ulimit -l unlimited
Directory(/tmp):
./bin/elasticsearch -Djna.tmpdir=/path/to/new/dir
mlockall might cause the JVM or shell session to exit if it tries to allocate more memory than is available!
Elasticsearch Settings
Directory
ES_HOME/config
module - elasticsearch.yml
logging - logging.yml
network
The address all network based modules will use to bind and publish to:
network :
host : 10.0.0.4
Path
path:
logs: /var/log/elasticsearch
data: /var/data/elasticsearch
Cluster name
Don’t forget to give your production cluster a name, which is used to discover and auto-join other nodes:
cluster:
name: <NAME OF YOUR CLUSTER>
Don’t reuse the same cluster names in different environment
- development: logging-dev
- staging: logging-stage
- production: logging-prod
Node name
Default (Marvel Character Name)
Provided
node:
name: <NAME OF YOUR NODE>
Single Node on Machine
node:
name: ${HOSTNAME}
Configuration style
JSON
elasticsearch.json:
{
"network" : {
"host" : "10.0.0.4"
}
}
Command
$ elasticsearch -Des.network.host=10.0.0.4
Default
es.default.
Environment
{
"network" : {
"host" : "${ES_NET_HOST}"
}
}
Non-store
${prompt.text} or ${prompt.secret}
node:
name: ${prompt.text}
On execution:
Enter value for [node.name]:
Elasticsearch will not start if ${prompt.text} or ${prompt.secret} is used in the settings and the process is run as a service or in the background.
Index Settings
Index Level (YAML or JSON)
$ curl -XPUT http://localhost:9200/kimchy/ -d \
'
index:
refresh_interval: 5s
'
Node Level (elasticsearch.yml)
index :
refresh_interval: 5s
Collapsed
$ elasticsearch -Des.index.refresh_interval=5s
Logging
Log4j (log4j-extras)
Format
- .yml
- .yaml
- .json
- .properties
Deprecation
config/logging.yml
deprecation: DEBUG, deprecation_log_file
Running as a Service on Linux
Linux
ES_USER
The user to run as, defaults to elasticsearch
ES_GROUP
The group to run as, defaults to elasticsearch
ES_HEAP_SIZE
The heap size to start with
ES_HEAP_NEWSIZE
The size of the new generation heap
ES_DIRECT_SIZE
The maximum size of the direct memory
MAX_OPEN_FILES
Maximum number of open files, defaults to 65535
MAX_LOCKED_MEMORY
Maximum locked memory size. Set to "unlimited" if you use the bootstrap.mlockall option in elasticsearch.yml. You must also set ES_HEAP_SIZE.
MAX_MAP_COUNT
Maximum number of memory map areas a process may have. If you use mmapfs as index store type, make sure this is set to a high value. For more information, check the linux kernel documentation about max_map_count. This is set via sysctl before starting elasticsearch. Defaults to 65535
LOG_DIR
Log directory, defaults to /var/log/elasticsearch
DATA_DIR
Data directory, defaults to /var/lib/elasticsearch
CONF_DIR
Configuration file directory (which needs to include elasticsearch.yml and logging.yml files), defaults to /etc/elasticsearch
ES_JAVA_OPTS
Any additional java options you may want to apply. This may be useful, if you need to set the node.name property, but do not want to change the elasticsearch.yml configuration file, because it is distributed via a provisioning system like puppet or chef. Example: ES_JAVA_OPTS="-Des.node.name=search-01"
RESTART_ON_UPGRADE
Configure restart on package upgrade, defaults to false. This means you will have to restart your elasticsearch instance after installing a package manually. The reason for this is to ensure, that upgrades in a cluster do not result in a continuous shard reallocation resulting in high network traffic and reducing the response times of your cluster.
ES_GC_LOG_FILE
The absolute log file path for creating a garbage collection logfile, which is done by the JVM. Note that this logfile can grow pretty quick and thus is disabled by default.
Debian/Ubuntu
runlevels
update-rc.d
init script
/etc/init.d/elasticsearch
configuration
/etc/default/elasticsearch
after install
dpkg -i
start on boot and start up
sudo update-rc.d elasticsearch defaults 95 10
sudo /etc/init.d/elasticsearch start
Oracle JDK
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer
java -version
RPM based distribution
Using chkconfig
init script
/etc/init.d/elasticsearch
configuration
/etc/sysconfig/elasticsearch
manual start
sudo /sbin/chkconfig --add elasticsearch
sudo service elasticsearch start
Using systemd
system rpm based
/etc/default/elasticsearch
configuration
/etc/sysconfig/elasticsearch
up
sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable elasticsearch.service
sudo /bin/systemctl start elasticsearch.service
MAX_MAP_COUNT setting
/etc/sysconfig/elasticsearch (no effect)
/usr/lib/sysctl.d/elasticsearch.conf
Running as a Service on Windows
https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-service-win.html
Directory Layout
Type(Setting) - Default Location
Description
home(path.home) - N/A
Home of elasticsearch installation.
bin(N/A) - {path.home}/bin
Binary scripts including elasticsearch to start a node.
conf(path.conf) - {path.home}/config
Configuration files including elasticsearch.yml
data(path.data) - {path.home}/data
The location of the data files of each index / shard allocated on the node. Can hold multiple locations.
logs(path.logs) - {path.home}/logs
Log files location.
plugins(path.plugins) - {path.home}/plugins
Plugin files location. Each plugin will be contained in a subdirectory.
repo(path.repo) - Not configured
Shared file system repository locations. Can hold multiple locations. A file system repository can be placed in to any subdirectory of any directory specified here.
script(path.script) - {path.conf}/scripts
Location of script files.
Multiple data paths
---------------------------------
path.data: /mnt/first,/mnt/second
---------------------------------
Or array format
----------------------------------------
path.data: ["/mnt/first", "/mnt/second"]
----------------------------------------
To stripe shards across multiple disks, please use a RAID driver instead.
Default Path
deb & rpm
-----------------------------------------------------------------------------------
Type | Location Debian/Ubuntu | Location RHEL/CentOS
-----------------------------------------------------------------------------------
home | /usr/share/elasticsearch | /usr/share/elasticsearch
-----------------------------------------------------------------------------------
bin | /usr/share/elasticsearch/bin | /usr/share/elasticsearch/bin
-----------------------------------------------------------------------------------
conf | /etc/elasticsearch | /etc/elasticsearch
-----------------------------------------------------------------------------------
conf | /etc/default/elasticsearch | /etc/sysconfig/elasticsearch
-----------------------------------------------------------------------------------
data | /var/lib/elasticsearch/data | /var/lib/elasticsearch
-----------------------------------------------------------------------------------
logs | /var/log/elasticsearch | /var/log/elasticsearch
-----------------------------------------------------------------------------------
plugins | /usr/share/elasticsearch/plugins | /usr/share/elasticsearch/plugins
-----------------------------------------------------------------------------------
repo | Not configured | Not configured
-----------------------------------------------------------------------------------
script | /etc/elasticsearch/scripts | /etc/elasticsearch/scripts
-----------------------------------------------------------------------------------
zip
-----------------------------------------------------------------------------------
Type | Description | Location
-----------------------------------------------------------------------------------
home | Home of elasticsearch installation | {extract.path}
-----------------------------------------------------------------------------------
bin | scripts to start a node | {extract.path}/bin
-----------------------------------------------------------------------------------
conf | files elasticsearch.yml and logging.yml | {extract.path}/config
-----------------------------------------------------------------------------------
data | location of files of each index / shard | {extract.path}/data
-----------------------------------------------------------------------------------
logs | Log files location | {extract.path}/logs
-----------------------------------------------------------------------------------
plugins | Plugin files location. | {extract.path}/plugins
-----------------------------------------------------------------------------------
repo | Shared file system repository locations. | Not configured
-----------------------------------------------------------------------------------
script | Location of script files. | {extract.path}/config/scripts
-----------------------------------------------------------------------------------
Repositories
PGP Key
We use the PGP key D88E42B4, Elasticsearch Signing Key, with fingerprint
4609 5ACC 8548 582C 1A26 99A9 D27D 666C D88E 42B4
APT
Download and install the Public Signing Key:
wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
Save the repository definition to /etc/apt/sources.list.d/elasticsearch-2.x.list:
echo "deb http://packages.elastic.co/elasticsearch/2.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-2.x.list
Run apt-get update and the repository is ready for use. You can install it with:
sudo apt-get update && sudo apt-get install elasticsearch
Configure Elasticsearch to automatically start during bootup. If your distribution is using SysV init, then you will need to run:
sudo update-rc.d elasticsearch defaults 95 10
Otherwise if your distribution is using systemd:
sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable elasticsearch.service
YUM
Download and install the public signing key:
rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
Add the following in your /etc/yum.repos.d/ directory in a file with a .repo suffix, for example elasticsearch.repo
[elasticsearch-2.x]
name=Elasticsearch repository for 2.x packages
baseurl=http://packages.elastic.co/elasticsearch/2.x/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1
And your repository is ready for use. You can install it with:
yum install elasticsearch
SysV init
chkconfig --add elasticsearch
Systemd
sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable elasticsearch.service
Reference
https://www.elastic.co/guide/en/elasticsearch/reference/current/setup.html
ElasticSearch 2 (2) - Setup的更多相关文章
- jar hell & elasticsearch ik 版本问题
想给es 安装一个ik 的插件, 我的es 是 2.4.0, 下载了一个版本是 1.9.5, [2016-10-09 16:56:26,248][INFO ][node ] [node-2] init ...
- Elasticsearch Configuration 中文版
##################### Elasticsearch Configuration Example ##################### # This file contains ...
- centos6.5安装elasticsearch
java下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.htmles下载地址 : ...
- 分布式搜索引擎Elasticsearch的简单使用
官方网址:https://www.elastic.co/products/elasticsearch/ 一.特性 1.支持中文分词 2.支持多种数据源的全文检索引擎 3.分布式 4.基于lucene的 ...
- Elasticsearch配置文件说明
一.Cluster setting Cluster indices.ttl.interval 允许设置多久过期的文件会被自动删除.默认值是60秒. indices.cache.filter.siz ...
- ElasticSearch学习-centos下安装
1.安装java运行环境(jre) //这里我安装了jdk 其实只需要安装jre就可以了 0)cd /usr;mkdir /usr/java; cd java 1)wget http://downlo ...
- elasticsearch单机多实例环境部署
elasticsearch的功能,主要用在搜索领域,这里,我来研究这个,也是项目需要,为公司开发了一款CMS系统,网站上的搜索栏功能,我打算采用elasticsearch来实现. elasticsea ...
- ELK——安装 logstash 2.2.0、elasticsearch 2.2.0 和 Kibana 3.0
本文内容 Elasticsearch logstash Kibana 参考资料 本文介绍安装 logstash 2.2.0 和 elasticsearch 2.2.0,操作系统环境版本是 CentOS ...
- ELK初学搭建(elasticsearch)
ELK初学搭建(elasticsearch) elasticsearch logstash kibana ELK初学搭建 elasticsearch 1.环境准备 centos6.8_64 mini ...
随机推荐
- C#创建无窗体的应用程序
示例程序 这是初学C#时困惑了很久才解决的问题,突然想起来拿出来和大家分享. 当初我是这样做的: 1. 在窗体初始化时(构造函数里面),添加一句This.Visible = false; 2 ...
- HtmlUnit
htmlunit 是一款开源的java 页面分析工具,读取页面后,可以有效的使用htmlunit分析页面上的内容.项目可以模拟浏览器运行,被誉为java浏览器的开源实现.是一个没有界面的浏览器,运行速 ...
- canal数据同步目录
我们公司对于数据同步有以下需求 1.多个mysql库中有一些基础表需要数据统一,mysql跨库同步 2.mysql热数据加载到redis 3.全文检索需要mysql同步到es 4.数据变更是附属的其它 ...
- C#中使用WeiFenLuo.WinFormsUI.Docking.dll实现窗口停靠效果
很酷的效果,很值得好好去学习的哈. 重置工具箱: 新建一个WinForm程序,项目名称为TestDockPanelControl.选中Form1窗体后选择工具箱--->>新建个添加选项卡命 ...
- python3 raise HTTPError(req.full_url, code, msg, hdrs, fp) urllib.error.HTTPError: HTTP Error 403: Forbid
1.分析: 如果用 urllib.request.urlopen 方式打开一个URL,服务器端只会收到一个单纯的对于该页面访问的请求,但是服务器并不知道发送这个请求使用的浏览器,操作系统,硬件平台等信 ...
- 20155217《网络对抗》Exp04 恶意代码分析
20155217<网络对抗>Exp04 恶意代码分析 实践内容 使用schtasks指令监控系统运行 使用sysmon工具监控系统运行 使用virscan分析恶意软件 使用systrace ...
- Python学习系列:PyCharm CE 安装与测试
开坑啦开坑啦~最近比赛要用Python了,开始强行学习. Mac下PyCharm CE 安装 先去百度PyCharm,一个很好用IDE,下载免费版的就够用啦: https://www.jetbrain ...
- 《网络对抗》Exp7 网络欺诈防范
20155336<网络对抗>Exp7 网络欺诈防范 实验内容 本实践的目标理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法.具体实践有 简单应用SET工具建立冒名网站 (1分 ...
- stl源码剖析 详细学习笔记 算法总览
//****************************基本算法***************************** /* stl算法总览,不在stl标准规格的sgi专属算法,都以 *加以标 ...
- stl源码剖析 详细学习笔记heap
// // heap.cpp // 笔记 // // Created by fam on 15/3/15. // // //---------------------------15/03/15 ...