ElasticSearch常用命令

今天敲了一遍常用命令,发现还是会忘。。。

1.创建索引

PUT users
{
  "mappings": {
    "properties": {
      "name":{
        "type": "keyword"
      },
      "age":{
        "type": "integer"
      },
      "remark":{
        "type": "text"
      }
    }
  }
}

2.添加索引结构

PUT users/_mapping
{
  "properties": {
      "content1":{
        "type": "keyword"
      },
      "content2":{
        "type": "keyword"
      }
  }
}

3.查看索引结构

GET users

4.删除索引

DELETE users

以上是索引的基本操作命令

5.添加(文档)数据

PUT users/_doc/1
{
  "age":15,
  "name":"张三的名字叫张三",
  "remark":"张三的备注",
  "content":"张三的content"
}

6.根ID获得文档数据

GET users/_doc/1

7.根据ID修改文档数据(PUT方式,不推荐)

PUT users/_doc/1
{
  "age":16
}

8.根据ID修改文档数据(post方式,推荐)

POST users/_doc/1
{
  "doc":{
    "age":15,
    "name":"张三的名字",
    "remark":"张三的备注"
  }
}

9.根据ID删除

DELETE users/_doc/1

以上是文档的基本操作命令

多创建一些文档,方便下面的复杂查询

PUT users/_doc/2
{
  "age":16,
  "name":"李四的名字叫李四",
  "remark":"李四的备注",
  "content":"李四的content"
}
PUT users/_doc/3
{
  "age":17,
  "name":"王五的名字叫王五",
  "remark":"王五的备注",
  "content":"王五的content"
}
PUT users/_doc/4
{
  "age":18,
  "name":"赵六的名字叫赵六",
  "remark":"赵六的备注",
  "content":"赵六的content"
}
PUT users/_doc/5
{
  "age":18,
  "name":"阿三的名字叫赵六",
  "remark":"阿三的备注",
  "content":"阿三的content"
}

10.单一字段查询,如果查询字段类型都具备(方式一)

GET users/_doc/_search?q=name:张三#如果是自动创建的索引,文本的字段会同时创建两种类型,textkeyword,按照这个查询方式查询,会先将name进行分词后查询
GET users/_doc/_search?q=name.keyword:张三#按照这个查询方式查询,不会先将name进行分词直接查询

11.单一字段查询(方式二)

GET users/_doc/_search
{
  "query":{
    "match":{
      "remark":"备注" 按照这个查询方式查询,会先将name进行分词后查询
      #"remark.keyword":"李0的备注"  按照这个查询方式查询,不会先将name进行分词直接查询
    }
  }
}

12.term(精确搜索)查询

如果字段是手动指定的text,则查不出来,如果是自动创建的,可以使用"age.keyword":15查询

GET users/_doc/_search
{
  "query":
  {
    "term":{
      "age":15
    }
  }
}

以上是文档一个字段查询的基本操作命令

下面是多字段查询

13.must(and查询),可理解为 select * from users where remark like '%备注%' and age like '%15%'

其中下面用到的term和match可以根据需求变换

GET users/_doc/_search
{
  "query":{
    "bool":{
      "must":[
        {
          "term":
          {
            "name":"张三的名字叫张三"
          }
        } , 
         {
          "match":
          {
            "age":"15"
          }
        }
      ]
    }
  }
}

14. should(or查询)可理解为 select * from users where remark = '备注' or age = '15'

GET users/_doc/_search
{
  "query":{
    "bool":{
      "should":[
        {
          "term":{
            "name":"张三的名字叫张三"
          }
        },
        {
          "term":{
            "age":16
          }
        }
      ]
    }
  }
}

15. must_not(!=)可理解为 select * from users where remark != '备注' and age != '15'

GET users/_doc/_search
{
  "query":{
    "bool":{
      "must_not": [
        {
          "term":{
            "name":"张三的名字叫张三"
          }
        },
        {
          "term":{
            "age":17
          }
        }
      ]
    }
  }
}

16.区间查询 理解理解为 select * from users where remark like '%李四%' and age >=16 and age <=17

gt 大于
gte 大于等于
lt 小于
lte 小于等于!

GET users/_doc/_search
{
  "query":{
    "bool":{
      "must":{
        "match":{
          "remark":"李四"
        }
      },
      "filter":{
        "range":{
          "age":{
            "gte":16,
            "lte":17
          }
        }
      }
    }
  }
}

17.指定返回某些字段

GET users/_doc/_search
{
  "_source":["age"]
}

18.排序 同事搜索“的备注”、“张三”,并先按照age字段降序,再按照_score分值字段降序排列

GET users/_doc/_search
{
  "query":{
    "bool":{
      "must":{
        "match":{
          "remark":"的备注 张三"
        }
      }
    }
  },
  "sort":[
    {
      "age":"desc"
    },
    {
      "_score":"desc"
    }
  ]
}

19.高亮

pre_tags:为查找的关键字添加自定义的html代码前缀
post_tags:为查找的关键字添加自定义的html代码后缀
fields:定义要高亮的字段

GET users/_doc/_search
{
  "query":{
    "bool":{
      "must":[
        {
          "match":{
            "remark":"的备注"
          }
        },
        {
          "match":{
            "content":"张三"
          }
        }
      ]
    }
  },
  "highlight":{
    "pre_tags":"<mytag style='color:red'>",
    "post_tags":"</mytag>",
    "fields":[
      {
        "remark":{}
      },
      {
        "content":{}
      }
    ]
  }
}

20.分页查询

from:从第几条数据开始(>关系,非>=)
size:查询几条数据

GET users/_doc/_search
{
  "from:":2,
  "size":2
}

其他:查看索引的相关信息

可以查出来每个索引使用的空间大小,记录数等信息

GET _cat/indices?v
原文地址:https://www.cnblogs.com/rb2010/p/13045292.html