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禁用
prettyjson默认为true
查询字符串q=[..]_exists_:title是否存在
status:active查询status字段是active的文档
title:(quick OR brown)查询title字段是quickbrown的文档
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

curl -H "Content-Type: application/json" -XPUT localhost:9200/dayapi/_settings -d '{ "index.max_result_window" :"1000000"}'
Last modification:January 20th, 2020 at 03:38 pm