REST API用途
ES提供了很多全面的API,大致可以分成如下几种:
1 检查集群、节点、索引的健康情况
2 管理集群、节点,索引数据、元数据
3 执行CRUD,创建、读取、更新、删除 以及 查询
4 执行高级的查询操作,比如分页、排序、脚本、聚合等
查看集群状态
可以通过CURL命令发送REST命令,查询集群的健康状态:
//查看集群状态
curl 'localhost:9200/_cat/health?v'
//查询节点的列表
curl 'localhost:9200/_cat/nodes?v'
//查看所有的索引
curl 'localhost:9200/_cat/indices?v'
//创建索引
curl -XPUT 'localhost:9200/customer?pretty'
//插入数据
curl -XPUT 'localhost:9200/customer/external/1?pretty' -d '
{
"name": "John Doe"
}'
//查询数据
curl 'localhost:9200/customer/external/1?pretty'
//删除索引
curl -XDELETE 'localhost:9200/customer?pretty'
不使用id的时候
curl -XPOST ‘localhost:9200/customer/external?pretty’ -d ’ {“name”: “mike” }’
基于kibana
创建索引
PUT account
删除索引
DELETE account
//查询
POST account/_mapping/list/
{
"query" : {
"match" : {
"name": "汽车"
}
},
"from" : 0,
"size" : 200 //不加默认10条;
}
//返回两个字段
{
"query": { "match_all": {} },
"_source": ["name", "id"]
}
//查询总数
GET account/_count
分词
ik 带有两个分词器
ik_max_word :会将文本做最细粒度的拆分;尽可能多的拆分出词语
ik_smart:会做最粗粒度的拆分;已被分出的词语将不会再次被其它词语占有
GET _analyze
{
"analyzer": "ik_smart",
"text": ["晚上吃什么"]
}
聚合
GET /megacorp/employee/_search
{
"aggs": {
"all_interests": {
"terms": { "field": "interests" }
}
}
}
es进行聚合操作时提示Fielddata is disabled on text fields by default
PUT account/_mapping/list/
{
"properties": {
"interests": {
"type": "text",
"fielddata": true
}
}
}
可以先看下索引里面字段属行
GET account/_mapping
es 不支持date日期格式yyyy-MM-dd HH:mm:ss
如果设置了映射,就不能动态添加字段了,就要设置所有字段的字段,比较渣
PUT account
{
"mappings": {
"list": {
"properties": {
"ctime": {
"type": "date",
"format":"yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
},
"utime": {
"type": "date",
"format":"yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
},
}
}
}
}
//php 设置日期类型
$params = [
'index' => 'account', //索引名(相当于mysql的数据库)
'body' => [
'mappings' => [
'list' => [ //类型名(相当于mysql的表)
'properties' => [ //文档类型设置(相当于mysql的数据类型)
'ctime' => [
'type' => 'date',
"format":"yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
],
'utime' => [
'type' => 'date',
"format":"yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
]
]
]
]
]
];
$data = $this->client->indices()->create($params);