全文检索 — ElasticSearch_04(ES的常用CURL命令、更改索引已有字段的数据类型、查询结果超过10000报500错误)

文章目录

  • 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

欢迎访问笔者个人技术博客: http://rukihuang.xyz/

1 基本语法

curl [ -s][ -g][ -X<REST Verb>][ -H 'Content-Type: application/json'] ':/[/Type][/ID]/_search?pretty&q='
  • -s:不输出查询的时间等信息
  • -g:转义用
  • :REST请求的,get/post/put/delete
  • :节点ip,本机为localhost
  • :阶段端口,es为9200
  • :索引名,支持通配符*
  • :索引类型,一个index只有1个type,可不输入
  • :操作对象的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 更改索引已有字段的类型

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

参考文章
https://www.cnblogs.com/daynote/p/11076965.html

你可能感兴趣的:(ElasticSearch)