ElasticSearch 提供了一系列的Restful风格的API,我们可以使用curl命令进行使用,也可以在kibana中使用。
本文介绍使用curl操作es
一般情况下
GET
获取数据 POST
添加数据 PUT
添加数据 DELETE
删除数据
注意事项
如果es需要认证,则在curl后添加-u name:'pwd'
认证即可
如果响应结果需要美化成json,则在url
后拼接?pretty
即可
1 集群常用命令
1.1 查看版本
curl -XGET http://127.0.0.1:9200/
1.2 查看集群状态
这里在url后面添加了pretty是为了让其在控制台上输出的结果是一个优美的json格式
curl -XGET http://127.0.0.1:9200/_cluster/state?pretty
2 索引库常用命令
2.1 查看所有索引
curl http://127.0.0.1:9200/_cat/indices?v
2.2 创建索引(不指定映射和setting)
curl -XPUT "http://127.0.0.1:9200/索引名"
2.3 创建索引(指定映射和setting)
curl -d 指定json即可
我们的索引映射配置:
{
"settings": {
"index.blocks.read_only_allow_delete": "false",
"index.max_result_window": "10000000",
"number_of_replicas": "0",
"number_of_shards": "1"
},
"mappings": {
"properties": {
"targetContent": {
"type": "text"
},
"sourceContent": {
"type": "text"
},
"sourceLanguageId": {
"type": "long"
},
"realmCode": {
"type": "long"
},
"createTime": {
"format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis",
"type": "date"
},
"corpusScore": {
"type": "float"
},
"id": {
"type": "long"
},
"targetLanguageId": {
"type": "long"
}
}
}
}
通过在线转义将我们的json转义,使用如下命令即可
curl -XPUT "http://127.0.0.1:9200/索引名" -H "Content-Type: application/json" -d "{\"settings\":{\"index.blocks.read_only_allow_delete\":\"false\",\"index.max_result_window\":\"10000000\",\"number_of_replicas\":\"0\",\"number_of_shards\":\"1\"},\"mappings\":{\"properties\":{\"targetContent\":{\"type\":\"text\"},\"sourceContent\":{\"type\":\"text\"},\"sourceLanguageId\":{\"type\":\"long\"},\"realmCode\":{\"type\":\"long\"},\"createTime\":{\"format\":\"yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis\",\"type\":\"date\"},\"corpusScore\":{\"type\":\"float\"},\"id\":{\"type\":\"long\"},\"targetLanguageId\":{\"type\":\"long\"}}}}"
2.3 删除索引
curl -XDELETE http://127.0.0.1:9200/索引名
3 文档常用命令
3.1 创建文档
# ip/索引库名/文档类型(默认是_doc)/id/ -d 文档内容
# id可以忽略,ES会自动生成id,如果id存在,那么就是更新数据,字段可以增加
curl -XPOST "http://127.0.0.1:9200/索引库名/_doc/1" -H "Content-Type: application/json" -d "对应数据的json"
3.2 修改文档
# 修改id为1的数据
curl -XPOST "http://127.0.0.1:9200/索引库名/_doc/1" -H "Content-Type: application/json" -d "对应数据的json"
3.3 删除文档
删除id为1的数据
curl -XDELETE "http://127.0.0.1:9200/索引库名/_doc/1"
4 查询命令
ES最主要的功能就是查询文档。但是一般情况下我们的查询操作都是在kibana中进行,因为kibana可以为我们提供提示,非常方便,但是在curl情况下,如何操作呢?我们只需要在kibana中写好查询语句,再稍微改造一下即可。
比如在kibana中,查询18号语料库的全部数据,语句如下:
POST corpus_details_18/_search
{
"query": {
"match_all": {}
}
}
那么我们只需要通过curl执行post
命令,然后-d
添加请求体即可,注意要通过-H
将请求体指定为json -H 'Content-Type: application/json'
,改造后的请求如下
curl -XPOST "http://127.0.0.1:9200/corpus_details_18/_search?pretty " -H "Content-Type: application/json" -d "{\"query\":{\"match_all\":{}}}"
所以,其他各种复杂查询都可以使用这种方式进行操作了!