zoukankan      html  css  js  c++  java
  • ElasticSearch常用查询命令-kibana中使用

    初学ES

    把它当做数据库学习,比较容易理解

    只创建索引(表)

    1. 创建

    (可以理解为创建数据库中的表)

    image-20200531115204407

    PUT 索引名(表名)
    {
      "mappings": {
        "properties": {
          "age"(字段名):{
            "type": "integer"(字段类型)
          },
          "title"(字段名):{
            "type": "text"(字段类型)
          }
        }
      }
    }
    

    2.创建好后查看索引结构

    get 索引名

    image-20200531115344474

    添加文档(数据)

    如果索引不存在会先创建索引(表名)后创建(插入)文档(数据)

    格式 :PUT 索引名(表名)/文档类型(类似于一个标识)/文档id(数据库表中的数据id)

    PUT /db/_doc/1
    {
      "age":20,
      "content":"内容:学习决定命运,细节决定成败",
      "name":"张三的名字",
      "title":"标题:学习决定命运,细节决定成"
    }
    

    执行后,相当于在db数据库创建了一个id为1的一条数据,可通过elasticsearch-head查看

    image-20200531115938345

    查看文档(数据)

    GET 索引名/文档类型/文档id

    GET /db/_doc/1
    

    image-20200531125040888

    version:版本号,从1开始记录,每次修改都会+1

    _source:文档数据(可以理解为java返回的Model)

    修改文档数据(数据update)

    put方式修改

    put /索引名/文档类型/文档Id
    {
      "age":19,(修改的新值)
      "content":"1"(修改的新值)
    }
    

    注意:我原本数据中有name itle列,我执行的PUT操作没有写明name itle,执行后该文档就没有name itle字段了

    post方式修改

    POST /索引名/文档类型/文档Id/_update
    {
        "name":"张三的名字叫李四"
    }
    

    推荐使用这种方式,这种方式可以想改哪些字段的值就改哪些,不改的无需再次传入,不会消失,更方便

    删除文档&索引

    删除索引:delete 索引名

    删除文档:delete 索引名/文档类型/文档id

    各种条件查询

    为了方便演示,首先先添加几条数据

    image-20200531130113103

    1.简单搜索(根据某个字段查询)

    根据上面GET DB得知,name字段type=keyword,content的字段type=text

    模糊查找

    text:会被IK粉刺及拆分

    发现content中包含“内容”的全部查出来了

    GET /db/_doc/_search?q=content:内容
    

    image-20200531131806252

    精确查找

    keyword:不会被IK分词器拆分

    发现只有完全匹配才可以查出来

    image-20200531131947890

    另外一种单字段查询方式

    GET db/_doc/_search
    {
      "query":{
        "match":{
          "content":"学习"
        }
      }
    }
    

    2.复杂搜索

    must与term区别

    must是会进行模糊查询,term不会

    例如一个content字段Type=text,使用must搜索关键字就可以搜出来,使用term就不行

    多条件查询

    must(And)

    匹配年龄=20且内容包含“学习”的数据

    GET db/_doc/_search
    {
      "query": {
        "bool": {
          "must": [
            {
              "match": {
                "content":"学习 是的" 匹配满足“学习”或“是的”的数据,多条件使用空格隔开
              }
            },
            {
               "match": {
                "age":20
              }
            }
          ]
        }
      }
    }
    

    should(or)

    匹配content包含“王五”或者年龄为25的数据

    GET db/_doc/_search
    {
      "query": {
        "bool": {
          "should": [
            {
              "match": {
                "content":"王五"
              }
            },
            {
               "match": {
                "age":25
              }
            }
          ]
        }
      }
    }
    

    must_not (!=)

    匹配content不包含“王五”且年龄不为25的数据

    GET db/_doc/_search
    {
      "query": {
        "bool": {
          "must_not": [
            {
              "match": {
                "content":"王五"
              }
            },
            {
               "match": {
                "age":25
              }
            }
          ]
        }
      }
    }
    

    区间查询

    查询年龄≥20且≤25的数据

    GET db/_doc/_search
    {
      "query": {
        "bool": {
          "filter":{
            "range":{
              "age":{
                "gte":20,
                "lte":25
              }
            }
          }
        }
      }
    }
    

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

    自定义字段返回

    只返回age ame字段

    GET db/_doc/_search
    {
      "query": {
        "bool": {
          "filter":{
            "range":{
              "age":{
                "gte":20,
                "lte":25
              }
            }
          }
        }
      },
      "_source": ["age","name"]
      }
    

    排序

    按照年龄降序及分值降序排列,注意:如果没有查询条件,排序是没有_score分值的

    GET db/_doc/_search
    {
      "query":{
        "match":{
          "content":"学习 是的"
        }
      },
      "sort":[
          {
          "_score":{
            "order":"desc"
          },
          "age":{
            "order":"desc"
          }
        }
      ]
    }
    

    高亮

    GET db/_doc/_search
    {
      "query":{
        "match":{
          "content":"学习"
        }
      },
      "highlight":{
        "pre_tags":"<mytag style='color:blue'>",为查找的关键字添加自定义的html代码前缀
        "post_tags":"</mytag>",为查找的关键字添加自定义的html代码后缀
        "fields":{
          "content":{} 定义要高亮的字段
        }
      }
    }
    

    结果如下:

    image-20200531142259559

    分页查询

    GET db/_doc/_search
    {
      "query":{
        "match":{
          "content":"学习"
        }
      },
      "from":0, 当前第几页
      "size":2 每页显示几条数据
    }
    
    GET db/_doc/_count 获得指定条件下总条数有多少
    {
      "query":{
        "match":{
          "content":"李四"
        }
      }
    }
    

    查看索引的相关信息

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

    GET _cat/indices?v

    image-20200531154347741

  • 相关阅读:
    创建数据库,用户,表
    Tomcat安装配置
    常用JS
    win8以管理员身份安装软件
    mybatis中@Param用法
    springMVC3
    SpringMVC参数绑定
    SpringMVC2
    查询数据库元数据
    mybatis 中 foreach collection的三种用法
  • 原文地址:https://www.cnblogs.com/rb2010/p/13019298.html
Copyright © 2011-2022 走看看