这里大概解答下各个目录、配置文件的作用:
目录 | 配置文件 | 描述 |
bin | | 放置脚本文件,如启动脚本 elasticsearch, 插件安装脚本等。 |
config | elasticserch.yml | elasticsearch 配置文件,如集群配置、jvm 配置等。 |
jdk | | java 运行环境 |
data | path.data | 数据持久化文件 |
lib | | 依赖的相关类库 |
logs | path.log | 日志文件 |
modules | | 包含的所有 ES 模块 |
plugins | | 包含的所有已安装的插件 |
注意点:
有些童鞋的机器内存可能不够,就需要修改 JVM 参数,配置文件路径为 config/jvm.options,ES V7.1 版本默认为 1g, 老版本为2g, 你可以自行修改。
Xmx 和Xms 数值请设置相同;
Xmx 不要超过机器内存的 50%;
内存总量不要超过 30GB, 参见官方文档 https://www.elastic.co/cn/blog/a-heap-of-trouble;
1. 查看集群健康情况
http://localhost:9200/_cat
=^.^=
/_cat/allocation
/_cat/shards
/_cat/shards/{index}
/_cat/master
/_cat/nodes
/_cat/tasks
/_cat/indices
/_cat/indices/{index}
/_cat/segments
/_cat/segments/{index}
/_cat/count
/_cat/count/{index}
/_cat/recovery
/_cat/recovery/{index}
/_cat/health
/_cat/pending_tasks
/_cat/aliases
/_cat/aliases/{alias}
/_cat/thread_pool
/_cat/thread_pool/{thread_pools}
/_cat/plugins
/_cat/fielddata
/_cat/fielddata/{fields}
/_cat/nodeattrs
/_cat/repositories
/_cat/snapshots/{repository}
/_cat/templates
http://localhost:9200/_cat/health?v
epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1586056370 03:12:50 main-search green 9 7 50 25 0 0 0 0 - 100.0%
说明:v是用来要求在结果中返回表头
状态值说明
Green - everything is good (cluster is fully functional),即最佳状态
Yellow - all data is available but some replicas are not yet allocated (cluster is fully functional),即数据和集群可用,但是集群的备份有的是坏的
Red - some data is not available for whatever reason (cluster is partially functional),即数据和集群都不可用
2. 查看所有节点
/_cat/nodes
3. 查看所有索引
http://localhost:9200/_cat/indices?v
green open .monitoring-kibana-7-2020.04.01 601ZG1FRQY688qAp3O1uaQ 1 1 8640 0 5.3mb 2.6mb
green open .monitoring-kibana-7-2020.04.02 J89ViHaQQC697nQ5gqMXtg 1 1 8639 0 5.3mb 2.6mb
green open .monitoring-kibana-7-2020.04.03 C-Sp-DDpTmWMZzdk1E3Wbw 1 1 3242 0 2.1mb 1mb
green open .monitoring-es-7-2020.04.05 3NT3phueS-qf76XDtwYKcw 1 1 34632 59482 60.6mb 31mb
4. 创建索引
PUT /customer?pretty
5. 添加文档到索引
curl -X PUT "localhost:9200/customer/_doc/1?pretty" -H 'Content-Type: application/json' -d'
{
"name": "John Doe"
}
'
6. 查询所有文档
GET /customer/_search?q=*&sort=name:asc&pretty
json格式:
GET /customer/_search
{
"query": { "match_all": {} },
"sort": [
{"name": "asc" }
]
}
索引管理
1. 创建索引
PUT user
{
"settings" : {
"index" : {
"number_of_shards" : 3,
"number_of_replicas" : 2
}
}
}
设置索引的分片数为3,备份数为2。注意:在ES中创建一个索引类似于在数据库中建立一个数据库(ES6.0之后类似于创建一个表)
说明:
默认的分片数是5到1024
默认的备份数是1
索引的名称必须是小写的,不可重名
简写:
PUT twitter
{
"settings" : {
"number_of_shards" : 3,
"number_of_replicas" : 2
}
}
2. 创建mapping映射
注意:在ES中创建一个mapping映射类似于在数据库中定义表结构,即表里面有哪些字段、字段是什么类型、字段的默认值等;也类似于solr里面的模式schema的定义
PUT twitter
{
"settings" : {
"index" : {
"number_of_shards" : 3,
"number_of_replicas" : 2
}
},
"mappings" : {
"type1" : {
"properties" : {
"field1" : { "type" : "text" }
}
}
}
}
3. 创建索引时加入别名定义
PUT twitter
{
"aliases" : {
"alias_1" : {},
"alias_2" : {
"filter" : {
"term" : {"user" : "kimchy" }
},
"routing" : "kimchy"
}
}
}
4. 索引创建完成返回值
{
"acknowledged": true, // 索引创建成功
"shards_acknowledged": true, // 分片+副本创建,启动成功
"index": "logs" // 索引名称
}
5. 查看索引的定义信息
1) GET /twitter,可以一次获取多个索引(以逗号间隔) 获取所有索引 _all 或 用通配符*
{
"logs": {
"aliases": { },
"mappings": { },
"settings": {
"index": {
"creation_date": "1586100271307",
"number_of_shards": "1",
"number_of_replicas": "1",
"uuid": "50kKYpnoRX-p6rwxXuo2Jw",
"version": {
"created": "7050099"
},
"provided_name": "logs"
}
}
}
}
2)索引设置项
GET /twitter/_settings
3)数据定义
GET /twitter/_mapping
6. 删除索引
DELETE /twitter
说明:
可以一次删除多个索引(以逗号间隔) 删除所有索引 _all 或 通配符 *
7. 判断索引是否存在
HEAD twitter
HTTP status code 表示结果 404 不存在 , 200 存在
8. 修改索引的settings信息
索引的设置信息分为静态信息和动态信息两部分。静态信息不可更改,如索引的分片数。动态信息可以修改。
REST 访问端点:
/_settings 更新所有索引的。
{index}/_settings 更新一个或多个索引的settings。
详细的设置项请参考:https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules.html#index-modules-settings
9. 修改备份数
PUT /twitter/_settings
{
"index" : {
"number_of_replicas" : 2
}
}
10. 设置回默认值,用null
PUT /twitter/_settings
{
"index" : {
"refresh_interval" : null
}
}
11. 设置索引的读写
index.blocks.read_only:设为true,则索引以及索引的元数据只可读
index.blocks.read_only_allow_delete:设为true,只读时允许删除。
index.blocks.read:设为true,则不可读。
index.blocks.write:设为true,则不可写。
index.blocks.metadata:设为true,则索引元数据不可读写。
12. 索引模板
在创建索引时,为每个索引写定义信息可能是一件繁琐的事情,ES提供了索引模板功能,让你可以定义一个索引模板,模板中定义好settings、mapping、以及一个模式定义来匹配创建的索引。
注意:模板只在索引创建时被参考,修改模板不会影响已创建的索引
12.1 新增/修改名为tempae_1的模板,匹配名称为te* 或 bar*的索引创建:
PUT _template/template_1
{
"index_patterns": ["te*", "bar*"],
"settings": {
"number_of_shards": 1
},
"mappings": {
"type1": {
"_source": {
"enabled": false
},
"properties": {
"host_name": {
"type": "keyword"
},
"created_at": {
"type": "date",
"format": "EEE MMM dd HH:mm:ss Z YYYY"
}
}
}
}
}
13. 查看索引模版
GET /_template/template_1
GET /_template/temp*
GET /_template/template_1,template_2
GET /_template
14. 删除模版
DELETE /_template/template_1
15. Open/Close Index 打开/关闭索引
POST /my_index/_close
POST /my_index/_open
说明:
关闭的索引不能进行读写操作,几乎不占集群开销。
关闭的索引可以打开,打开走的是正常的恢复流程。
16. 索引添加新字段
{
"properties": {
"publish_date": {
"type": "keyword"
}
}
}