elasticsearch安装:
参考文章:http://www.ruanyifeng.com/blog/2017/08/elasticsearch.html
LINUX环境
1、先确保安装JDK 1.8
2、下载 elasticsearch-6.1.2.tar.gz 安装包
tar -zxvf ./elasticsearch-6.1.2.tar.gz
3、sudo sysctl -w vm.max_map_count=262144
4、通过root用户,修改 /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
5、重新登录
6、禁用(centos):
在elasticsearch.yml中配置bootstrap.system_call_filter为false,注意要在Memory下面:
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
7、集群部署
(master,slave1,slave2,slave3,slave4)
将ES拷贝到每台机器上,ssh到每台机器上,先用ROOT用户执行:
sudo sysctl -w vm.max_map_count=262144
vi /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
编辑ES的配置文件:
vi ./config/elasticsearch.yml
设置其中的配置:
cluster.name: kdap ##每台机器都一样
node.name: node-1 ##各机器不一样 可以是 node-1 ~node-5
network.host: 10.201.60.62 ##各机器不一样 62 63 64 65 67
discovery.zen.ping.unicast.hosts: [“master”, “slave1”,“slave2”,“slave3”,“slave4”] ##各机器 相同
bootstrap.memory_lock: false ##各机器 相同
bootstrap.system_call_filter: false ##各机器 相同
8、分词器安装
下载 elasticsearch-analysis-ik-6.1.2.zip
cd /usr/local/szkingdom-kap-cluster-runtime/elasticsearch-6.1.2
unzip elasticsearch-analysis-ik-6.1.2.zip
cp ./elasticsearch ./plugins/ -R
cd ./plugins/
mv elasticsearch analysis-ik
scp -r ./analysis-ik/ hadoop@slave1:/usr/local/szkingdom-kap-cluster-runtime/elasticsearch-6.1.2/plugins/
scp -r ./analysis-ik/ hadoop@slave2:/usr/local/szkingdom-kap-cluster-runtime/elasticsearch-6.1.2/plugins/
scp -r ./analysis-ik/ hadoop@slave3:/usr/local/szkingdom-kap-cluster-runtime/elasticsearch-6.1.2/plugins/
scp -r ./analysis-ik/ hadoop@slave4:/usr/local/szkingdom-kap-cluster-runtime/elasticsearch-6.1.2/plugins/
9、运行
每台机器上执行
setsid ./bin/elasticsearch
10、查看版本
curl master:9200
11、创建INDEX
curl -X PUT 'master:9200/accounts' -H 'Content-Type: application/json' -d '
{
"mappings": {
"person": {
"properties": {
"user": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_max_word"
},
"title": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_max_word"
},
"desc": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_max_word"
}
}
}
}
}'
12、插入数据
curl -X PUT 'master:9200/accounts/person/1' -H 'Content-Type: application/json' -d '
{
"user": "张三",
"title": "工程师",
"desc": "数据库管理"
}'
curl -X POST 'master:9200/accounts/person/2' -H 'Content-Type: application/json' -d '
{
"user": "李四",
"title": "工程师",
"desc": "系统管理"
}'
curl -X POST 'master:9200/accounts/person' -H 'Content-Type: application/json' -d '
{
"user": "李四",
"title": "工程师",
"desc": "系统管理"
}'
13、查看数据
curl -X GET 'http://master:9200/_cat/indices?v'
curl -X GET ‘http://master:9200/accounts/person/1/’
curl -X GET ‘http://master:9200/accounts/person/1/_source’
curl 'master:9200/accounts/person/1?pretty=true'
curl 'master:9200/accounts/person/_search'
11、条件查询
curl 'master:9200/accounts/person/_search' -H 'Content-Type: application/json' -d '
{
"query" : { "match" : { "desc" : "数据库" }}
}'
对ES的关键理解
1 在ES中索引包含两层意思:一种是名词:类似传统数据库的库,一种是动词:将数据存储的行为。
2 下面是常用的将ES一些概念和数据库进行对比图:
Relational DB -> Databases -> Tables -> Rows -> Columns
Elasticsearch -> Indices -> Types -> Documents -> Fields
3 ES中可以有多个索引(index)(数据库),每个索引可以包含多个类型(type)(表),每个类型可以包含多个文档(document)行,然后每个文档可以包含多个字段(Field)(列)