文章目录

  • 1 基本语法
  • 2 常用参数
  • 3 常用CURL语句
  • 3.1 查看node状态
  • 3.2 查看集群健康状况
  • 3.3 查看全部索引(排序后)
  • 3.4 查看特定索引
  • 3.5 pretty,美观
  • 3.6 是否存在
  • 3.7 查指定的字段值
  • 3.8 查指定的字段值,并只显示3个
  • 3.9 从第3个开始只显示3个
  • 3.10 按时间排序,desc降序,默认为升序
  • 3.11 模糊查询
  • 3.12 比较大小
  • 3.13 是否显示
  • 3.14 设置包含的字段
  • 3.15 组合查询
  • 3.16 范围查询
  • 3.17 关闭打开索引
  • 3.18 删除符合条件的记录
  • 3.19 新建索引并设定mapping
  • 3.20 删除索引
  • 3.21 将'索引1'的数据转到'索引2' reindex
  • 3.22 设置别名
  • 3.23 查看某个索引的mapping
  • 4 遇到的问题
  • 4.1 更改索引已有字段的类型
  • 4.2 es查询结果大于10000,报500



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字段是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一定要大写,不然识别不出
  • 组合条件之间用%20转义后的空格分隔
  • 括号内的条件用字段名:值表示

3.16 范围查询

curl -g 'localhost:9200/dayapi*/_search?pretty&q=TIME:[2019-05%20TO%202019-06]'
  • 范围查询条件字段必须为可比较的字段类型,如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 更改索引已有字段的类型

  • 思路来源于:
  • 新建索引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"}'