环境
安装 docker 就不多说了
Elasticsearch 以及 ik, kibana 版本一定要一致,此次使用的版本是7.9.0
Elasticsearch
1 | docker pull elasticsearch:7.9.0 |
安装成功后,可以看到
1 | root@ubuntu:~# curl localhost:9200 |
kibana
kibana 是一个简单的 ES 可视化管理工具。
1 | docker pull kibana:7.9.0 |
安装成功后访问浏览器 localhost:5601 可以看到界面。
ES简单使用
简单概念
ElasticSearch的索引即index,可以理解为MySQL的 Table (6.x之前可以理解为database, 6.x之后可理解为table)。因为之前在 index 和文档之间有一层 type(类型),且可以创建多个mapping,而7.0没有了,一个 index 也只能有一个 mapping。
索引
索引名必须全小写。
创建文档时,也会自动生成索引。
新增索引
PUT: /{index_name}
path parameters:
- index_name:
- wait_for_active_shards(可选,字符串):任意正整数(1 到 number_of_replicas+1)或者all,默认1.等待碎片副本数达到后,执行后续操作。
- master_timeout(可选,时间单位(d,h,m,s,ms,micros,nanos)):指定连接master node 的超时时间,默认30s。
- timeout(可选,时间单位(d,h,m,s,ms,micros,nanos)): 指定响应超时时间,默认30s。
request body:
- aliases(可选): index 别名,
- mappings(可选): (mapping 对象)如果指定了,可以包含三个属性:
- Field names
- Field data types
- Mapping parameters
- settings(可选): 配置index
举个例子:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22PUT /my-index-000001
{
"settings": {
"number_of_shards": 3,
"number_of_replicas": 2,
"index.write.wait_for_active_shards": "2"
},
"mappings": {
"properties": {
"field1": { "type": "text" }
}
},
"aliases": {
"alias_1": {},
"alias_2": {
"filter": {
"term": { "user.id": "kimchy" }
},
"routing": "shard-1"
}
}
}删除索引
DELETE /{index_name}path parameters:
- index_name
- 可以逗号分割
- 可以使用 wildcard 匹配
- 不能使用 alias。
- _all 或者 * 可以删除所有索引。如果要禁止此行为,需要设置 action.destructive_requires_name 为 true。
在 elasticsearch.yml 中修改或者使用 cluster update settings APIquery parameters:
- allow_no_indices: 当通配符表达式或者_all, 仅能匹配到关闭的索引时。抛出异常。默认true。
- expand_wildcards:all/open/closed/hidden/none, 默认open
- ignore_unavailable: 默认true, missing 或者 close 的索引不会在响应中。
- master_timeout(可选,时间单位(d,h,m,s,ms,micros,nanos)):指定连接master node 的超时时间,默认30s。
- timeout(可选,时间单位(d,h,m,s,ms,micros,nanos)): 指定响应超时时间,默认30s。
查询索引
GET: /_cat/indices/?v 可以查看 ES 所有索引,以及他的相关信息,比如占用空间等等。查看单个索引详细信息
GET: /{index_name}path parameters:
- index_name
- 可以逗号分割
- 可以使用 wildcard 匹配
- _all 或者 * 可以删除所有索引。
query parameters:
- allow_no_indices
当通配符表达式或者_all, 仅能匹配到关闭的索引时。抛出异常。默认true - expand_wildcards:all/open/closed/hidden/none, 默认open
- flat_settings: 如果为 true, 以 flat foramt 返回所有 settings。默认为false。
- include_defaults: 是否包括默认 settings。默认false
- include_type_name: 7.0之后移除,为 true 。一个 mapping 类型则指定一个mapping body。默认false。
- ignore_unavailable: 默认true, missing 或者 close 的索引不会在响应中。
- local: 如果true, 只会接口本地节点的信息。默认false,也就是从 master 节点接收信息。
- master_timeout(可选,时间单位(d,h,m,s,ms,micros,nanos)):指定连接master node 的超时时间,默认30s。
Documents 文档:
documents 其实也类似 sql 中的一条数据。index则有点像表,是数据的集合。
新增数据(index)
新增数据有如下接口:
1 | PUT /<target>/_doc/<_id> |
新增时请使用 POST /<target>/_create/<_id>
,不要使用PUT /<target>/_doc/<_id>
。经过测试已存在的记录的时,前者不会新增,且会响应出错,后者会使其版本号+1。