一 ElasticSearch 是什么
二 怎么使用
1 安装ElasticSearch 和head插件,以及需要的依赖
①下载elasticSearch 官网下载地址
链接:https://pan.baidu.com/s/1G6vTU52iSIbChLIUX71-Eg
提取码:y7ri
② 下载head插件 git下载地址
链接:https://pan.baidu.com/s/12tNwXH1jqlCRvzoL0IyN7w
提取码:tlfr
安装下载node.js / grunt/ pathomjs
参考地址
配置完成之后
安装head插件 参考地址
最后注意启动地址
启动地址
http://localhost:9200/_plugin/head/
因为这是head插件集成到es中 启动地址是这个 访问该地址的时候只需要进入es的bin目录进行启动elasticsearch.bat 文件
三 语法使用规则(只讲http方法)
http 方法 | 数据处理 | 说明 |
---|---|---|
post | create | 新增一个没有id的资源 |
get | read | 获取一个资源 |
put | update | 更新一个资源,或者新增一个有id的资源(如果id不存在) |
delete | delete | 删除一个资源 |
3.1 通用参数介绍
1 pretty
pretty=true //请求的返回值 是经过格式化后的json 数据
pretty=yaml //yaml格式
2 human
默认是false
true(更符合人类阅读的数据)
3 日期表达式
now 表示当前日期 或者 自己写日期后面添加||
y年 m月 w 周 d 天 h 小时 m 分钟 s 秒
+1h 增加1 小时
-1d 减少1天
/d 对某个单位四舍五入
now+1h 当前时间加上一小时
2015-01-01||+1d 1025年1月1日加上一天
4 响应过滤(filter_path)
指定返回值的字段 中间使用,分割
也可以使用* 通配符 匹配任何部分字段的名称
** 用来匹配不确定字段的名称
四 具体使用示例
- 创建库
http://127.0.0.1:9200/secisland?pretty 在请求方法中选择put
创建了一个索引为secisland 的索引(按照前面的介绍索引相当于普通的数据库)
查询数据库状态
方法1 在浏览器地址直接输入 http://localhost:9200/_cat/indices?v
方法2 使用head插件
2. 插入数据(文档相当于原来数据库中的每一行的数据)
put http://localhost:9200/secisland/secilog/1/
参数
{“computer”:“secisland”,
“message”:“it is a good computer”
}
修改文档
查询
删除
删除库
delete http://localhost:9200/secisland/
- 索引
2.1索引管理
2.1.1 创建索引
put http://ip:+端口/+索引的名字/
2.1.2删除索引
delete http://ip:+端口/+索引的名字/
使用_all 或者 * 可以获取对应的全部的索引
2.1.3 获取索引
get http://ip:+端口/+索引的名字/
获取该索引的详细信息包括一些配置信息
对结果进行过滤
下划线+字段的名字 表示显示的结果为哪些 多个字段之间使用 ,分割
http://localhost:9200/secisland/_aliases,_mappings/
2.1.4 打开/关闭索引
/索引名/_close 关闭
/索引名/_open 打开
如果指向了不存在的索引会抛出错误 可以使用 ignore_unavailable=true 不显示异常
禁止使用关闭索引功能
settingscluster.indices.close.enable false 默认为true
2.2 索引映射管理
2.2.1 增加映射
允许向索引(index)添加文档类型(type),或者向文档类型中添加字段(field)
例子1 向索引secisland 添加文档类型为user 包含字段name 字段类型为字符串
例子2 向已经存在的索引secisland 文档类型为log 添加新的字段user_name 字段类型为字符串
1 向多个索引设置映射
可以一次向多个索引添加文档类型
put http://localhost:9200/_all/_mapping/wendang/ 向所有索引添加wendang 字段为 ziduan
2 不同类型之间的冲突
在同一个索引的不同类型中,相同名字的字段必须有相同的映射,因为他们呢内部是在同一个领域内,所以更新的时候需要指定update_all_types 参数,这个时候会更新所有统一索引同名称的映射参数
例如
修改映射的操作如下
报错信息显示 需要修改全部
所以使用update_all_types参数 (我使用的2.3版本的暂时报错,这个解决了补上)
2.2.2 获取映射
host:port/{index}/_mapping/{type}/
其中{index}和{type}可以接受,
get http://localhost:9200/_all/_mapping/
2.2.3 判断类型是否存在
检查索引或文档类型是否存在
head http://localhost:9200/secisland/log/
存在返回200 不存在返回404
2.3 索引别名
删除别名
{
“actions”: [
{
“remove”: {
“index”: “secisland”,
“alias”: “alias1”
}
}
]
}
修改别名 可以使用先删除再添加的方法
{
“actions”: [
{
“remove”: {
“index”: “secisland”,
“alias”: “alias1”
}
},
{
“add”: {
“index”: “secisland”,
“alias”: “alias2”
}
}
]
}
一个别名关联多个索引
{
“actions”: [
{
“add”: {
“index”: “index1”,
“alias”: “alias1”
}
},
{
“add”: {
“index”: “index2”,
“alias”: “alias1”
}
}
]
}
或者
{
“actions”: [
{
“add”: {
“indices”: [“index1”,“index2”],
“alias”: “alias1”
}
}
]
}
1 过滤索引别名
- 映射
- 搜索
- 聚合
- 集群管理
- 索引分词器
- 高级配置
- 告警、监控和权限管理
- elk应用