1 基本语法
curl [ -s][ -g][ -X<REST Verb>][ -H 'Content-Type: application/json'] '<Node>:<Port>/<Index>[/Type][/ID]/_search?pretty&q=<search string>'
-s
:不输出查询的时间等信息-g
:转义用<REST Verb>
:REST请求的,get/post/put/delete<Node>
:节点ip,本机为localhost<Port>
:阶段端口,es为9200<index>
:索引名,支持通配符*<Type>
:索引类型,一个index只有1个type,可不输入<ID>
:操作对象的ID号,可不输入q
:前面加&,后面加查询语句
2 常用参数
参数 | 作用 | 备注 |
---|---|---|
q | 查询字符串 | |
s(sort) | 排序 | |
from | 从命中的hits开始返回 | 默认为0 |
size | 返回的hits数量 | 默认为10 |
_source_include | 查询包含某些source字段的文档 | |
_source_exclude | 查询不包含某些source字段的文档 | |
timeout | 搜索超时,将在指定执行时间内查到的hits返回 | 默认无超时 |
default_field | 指定字段,未指定字段前缀时返回所有字段 | 默认为index.query.default_field |
default_operator | 指定查询运算符 | 未指定,默认为or |
analyzer | 指定用于分析查询字符串的分析器 | |
_source | 布尔设定是否使用_source字段检索 | false禁用 |
analyze_wildcard | 布尔设定是否模糊查询(通配符、前缀) | 默认false禁用 |
pretty | json | 默认为true |
查询字符串q=[..] | _exists_:title | 是否存在 |
status:active | 查询status字段是active的文档 | |
title:(quick OR brown) | 查询title字段是quick或brown的文档 | |
author:"John Smith" | 查询author字段是John Smith的文档,因为有空格,所以要用引号包起来 | |
date:[2012-01-01 TO 2012-12-31] | 查询date字段是active的文档 | |
count:[10 TO *] | 查询count字段从10开始(增长)的文档 | |
count:>=10 | 查询count字段大于等于10的文档 |
3 常用CURL语句
3.1 查看node状态
curl localhost:9200/_cat/nodes?v
3.2 查看集群健康状况
curl localhost:9200/_cat/health?v
3.3 查看全部索引(排序后)
curl 'localhost:9200/_cat/indices?v&s=index'
3.4 查看特定索引
curl 'localhost:9200/_cat/indices/dayapi*?v&s=index'
*
:通配符
3.5 pretty,美观
curl 'localhost:9200/dayapi*?pretty'
3.6 是否存在
curl 'localhost:9200/dayapi*/_search?pretty&q=_exists_:MULT'
3.7 查指定的字段值
curl 'localhost:9200/dayapi*/_search?pretty&q=TESTID:123'
3.8 查指定的字段值,并只显示3个
curl 'localhost:9200/dayapi*/_search?pretty&q=TESTID:123&size=3'
3.9 从第3个开始只显示3个
curl 'localhost:9200/dayapi*/_search?pretty&q=TESTID:123&from=2&size=3'
3.10 按时间排序,desc降序,默认为升序
curl 'localhost:9200/dayapi*/_search?pretty&q=TESTID:123&sort=TIME:desc'
3.11 模糊查询
curl 'localhost:9200/dayapi*/_search?pretty&analyze_wildcard&q=TESTID:123'
3.12 比较大小
curl 'localhost:9200/dayapi*/_search?pretty&q=VAL:<200'
3.13 是否显示
curl 'localhost:9200/dayapi*/_search?pretty&_source=false'
3.14 设置包含的字段
curl 'localhost:9200/dayapi*/_search?pretty&_source_includes=TIME,VAL'
3.15 组合查询
curl -g 'localhost:9200/dayapi*/_search?pretty&q=(SOLAR:1%20AND%20CENTRAL:1)'
AND
一定要<font color='red'>大写</font>,不然识别不出- 组合条件之间用
%20
转义后的空格分隔 - 括号内的条件用
字段名:值
表示
3.16 范围查询
curl -g 'localhost:9200/dayapi*/_search?pretty&q=TIME:[2019-05%20TO%202019-06]'
- 范围查询条件字段必须为<font color='red'>可比较</font>的字段类型,如
date
,integer
,double
等
3.17 关闭打开索引
curl -XPOST localhost:19200/dayapi*/_close
curl -XPOST localhost:19200/dayapi*/_open
3.18 删除符合条件的记录
curl -XPOST 'localhost:19200/dayapi*/_delete_by_query?pretty&q=TESTID:781128
3.19 新建索引并设定mapping
curl -H "Content-Type: application/json" -XPUT 'http://localhost:9200/dayapi2/' -d '
{
"mappings" : {
"market_api" : {
"properties" : {
"prop_1" : {
"type" : "keyword"
},
"prop_2" : {
"type" : "double"
},
"prop_3" : {
"type" : "keyword"
},
"prop_4" : {
"type" : "integer"
}
}
}
}
}'
3.20 删除索引
curl -XDELETE 'http://localhost:9200/dayapi'
3.21 将'索引1'的数据转到'索引2' reindex
curl -H "Content-Type: application/json" -XPOST 'http://localhost:9200/_reindex' -d '
{
"source": {
"index": "index1"
},
"dest": {
"index": "index2"
}
}'
3.22 设置别名
curl -XPOST 'localhost:9200/_aliases' -d '{"actions": [{"add": {"index": "dayapi", "alias": "dayapi123"}}]}
3.23 查看某个索引的mapping
curl -XGET "http://localhost:9200/dayapi/_mapping?pretty"
4 遇到的问题
4.1 更改索引已有字段的类型
思路来源于:https://blog.csdn.net/apple9005/article/details/90415558
- 新建索引2
- 给索引2的mapping设定字段类型
- 索引1的数据 -> 索引2
- 删除索引1(旧),新建新的索引1(索引名一致),设置新的mapping字段类型
- 索引2的数据 -> 索引1(新)
- 删除索引2
- 相当于左手倒右手,左手穿上手套后,右手倒左手
4.2 es查询结果大于10000,报500
- 思路来源:https://blog.csdn.net/Misaki_root/article/details/101203647
- 扩大最大查询结果窗口
curl -H "Content-Type: application/json" -XPUT localhost:9200/dayapi/_settings -d '{ "index.max_result_window" :"1000000"}'
One comment
不错不错,我喜欢看 https://www.237fa.com/