> ElasticSearch 7.*
---
```
//启动单节点
bin/elasticsearch -E node.name=node0 -E cluster.name=geektime -E path.data=node0_data
//安装插件
bin/elasticsearch-plugin install analysis-icu
//查看插件
bin/elasticsearch-plugin list
//查看安装的插件
GET http://localhost:9200/_cat/plugins?v
//start multi-nodes Cluster
bin/elasticsearch -E node.name=node0 -E cluster.name=geektime -E path.data=node0_data
bin/elasticsearch -E node.name=node1 -E cluster.name=geektime -E path.data=node1_data
bin/elasticsearch -E node.name=node2 -E cluster.name=geektime -E path.data=node2_data
bin/elasticsearch -E node.name=node3 -E cluster.name=geektime -E path.data=node3_data
//查看集群
//查看nodes
GET _cat/nodes
GET _cluster/health
//kibana查看插件:
bin/kibana-plugin list
//kibana设置中文:
i18n.locale: "en" ===>>> i18n.locale: "zh-CN"
//安装cerebro
https://github.com/lmenezes/cerebro
wget https://github.com/lmenezes/cerebro/releases/download/v0.8.3/cerebro-0.8.3.tgz
//在logstash中导入新的数据,eg:movies.csv
在 logstash/bin下新建文件logstash.conf [如下:]
启动logstash并制定配置文件导入数据:
./logstash -f logstash.conf
```
---
```
ctrl + / 可以跳转到官方的api向导中
get _cluster/health 查看健康详情
GET /_cat/nodes?v 查看节点详情
# If no filters are given, the default is to select all nodes
curl -X GET "localhost:9200/_nodes"
# Explicitly select all nodes
curl -X GET "localhost:9200/_nodes/_all"
# Select just the local node
curl -X GET "localhost:9200/_nodes/_local"
# Select the elected master node
curl -X GET "localhost:9200/_nodes/_master"
# Select nodes by name, which can include wildcards
curl -X GET "localhost:9200/_nodes/node_name_goes_here"
curl -X GET "localhost:9200/_nodes/node_name_goes_*"
# Select nodes by address, which can include wildcards
curl -X GET "localhost:9200/_nodes/10.0.0.3,10.0.0.4"
curl -X GET "localhost:9200/_nodes/10.0.0.*"
# Select nodes by role
curl -X GET "localhost:9200/_nodes/_all,master:false"
curl -X GET "localhost:9200/_nodes/data:true,ingest:true"
curl -X GET "localhost:9200/_nodes/coordinating_only:true"
# Select nodes by custom attribute (e.g. with something like node.attr.rack: 2
in the configuration file)
curl -X GET "localhost:9200/_nodes/rack:2"
curl -X GET "localhost:9200/_nodes/ra*:2"
curl -X GET "localhost:9200/_nodes/ra*:2*"
```
---
- logstash.conf
```
input {
file {
path => "/opt/elk/newData/movies.csv" // 此处是制定新数据csv的位置
start_position => "beginning"
sincedb_path => "/dev/null"
}
}
filter {
csv {
separator => ","
columns => ["id","content","genre"]
}
mutate {
split => { "genre" => "|" }
remove_field => ["path", "host","@timestamp","message"]
}
mutate {
split => ["content", "("]
add_field => { "title" => "%{[content][0]}"}
add_field => { "year" => "%{[content][1]}"}
}
# mutate {
# gsub => [
#
# "year", "\\)", ""
# ]
# }
mutate {
convert => {
"year" => "integer"
}
strip => ["title"]
remove_field => ["path", "host","@timestamp","message","content"]
}
}
output {
elasticsearch {
hosts => "http://localhost:9200" // 此处是需要链接并且写入的es的地址;
index => "movies"
document_id => "%{id}"
}
stdout {}
```
##### ES修改字段类型:
- 因为ES无法直接修改类型,也无法直接修改索引名称
- 所以ES里面,只有创建,删除,复制操作:
###### 1.拿到某索引原先的索引结构
```
GET http://192.192.192.75:26927/commodity/_mapping?pretty=true
{
"commodity": {
"mappings": {
"commodity": {
"properties": {
"baseCategoryLastId": {
"type": "long"
},
"baseCategoryRootId": {
"type": "long"
},
"baseCategoryRootIdSort": {
"type": "long"
},
"baseCategorySecondId": {
"type": "long"
},
"baseCategorySecondIdSort": {
"type": "long"
},
"baseSale": {
"type": "integer"
},
"businessNo": {
"type": "integer"
},
"channelCategoryIds": {
"type": "nested",
"properties": {
"id": {
"type": "long"
},
"name": {
"type": "text"
},
"sort": {
"type": "integer"
}
}
},
"channelCommodityName": {
"type": "keyword",
"fields": {
"channelCommodityName": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_smart"
}
}
},
"channelCommodityNo": {
"type": "keyword"
},
"commodityType": {
"type": "integer"
},
"esPackageList": {
"type": "nested",
"properties": {
"baseCommodityName": {
"type": "text"
},
"baseCommodityNo": {
"type": "keyword"
},
"introduction": {
"type": "text"
}
}
},
"id": {
"type": "keyword"
},
"introduction": {
"type": "keyword",
"fields": {
"introduction": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_smart"
}
}
}
}
}
}
}
}
```
###### 2.再创建一个新的索引
- 索引名称取一个新的名字
- 将上面的结构拿下来,删除有索引名称的第一行
- 接口后面跟新的索引名称
```
PUT http://192.192.192.75:26927/commodity233
{
"mappings": {
"commodity": {
"properties": {
"baseCategoryLastId": {
"type": "long"
},
"baseCategoryRootId": {
"type": "long"
},
"baseCategoryRootIdSort": {
"type": "long修改为integer"
},
"baseCategorySecondId": {
"type": "long修改为integer"
},
"baseCategorySecondIdSort": {
"type": "long修改为integer"
},
"baseSale": {
"type": "integer"
},
"businessNo": {
"type": "integer"
},
"channelCategoryIds": {
"type": "nested",
"properties": {
"id": {
"type": "long"
},
"name": {
"type": "text"
},
"sort": {
"type": "integer"
}
}
},
"channelCommodityName": {
"type": "keyword",
"fields": {
"channelCommodityName": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_smart"
}
}
},
"channelCommodityNo": {
"type": "keyword"
},
"commodityType": {
"type": "integer"
},
"esPackageList": {
"type": "nested",
"properties": {
"baseCommodityName": {
"type": "text"
},
"baseCommodityNo": {
"type": "keyword"
},
"introduction": {
"type": "text"
}
}
},
"id": {
"type": "keyword"
},
"introduction": {
"type": "keyword",
"fields": {
"introduction": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_smart"
}
}
}
}
}
}
}
```
###### 3.重建索引【复制数据】
- 将原来索引里面的数据,复制到新的索引上面来
```
http://192.192.192.75:26927/_reindex
{
"source": {
"index": "commodity"
},
"dest": {
"index": "commodity233"
}
}
```
###### 4. 干掉老索引
```
http://192.192.192.75:26927/commodity
```
###### 5.这样索引就又干净了.... 但是不能修改索引的名称;所以又得再操作一遍;新建一个叫做commodity的索引,把233里面的数据复制过去
###### 6.经过测试,在复制数据的那一步,可能会导致数据丢失,就是复制过去的数据不够原来索引里面的数据。所以还是在专业运维的手里去操作
评论区