通过kibana操作es

method

url地址

描述

PUT

ip:9200/索引名称/类型名称/文档id

创建文档(指定文档id)

POST

ip:9200/索引名称/类型名称

创建文档(随机文档id)

POST

ip:9200/索引名称/类型名称/文档id/_update

修改文档

DELETE

ip:9200/索引名称/类型名称/文档id

删除文档

GET

ip:9200/索引名称/类型名称/文档id

通过文档id查询文档

POST

ip:9200/索引名称/类型名称/_search

查询所有数据

关于索引的基本操作

1、创建一个索引

PUT /test1/type1/1

kibana中es操作 kibana修改es数据_搜索


同时我们去看elasticsearch head

kibana中es操作 kibana修改es数据_字段类型_02


我们会发现多了一个索引

kibana中es操作 kibana修改es数据_字段类型_03


并且可以查看到我们刚刚插入的数据

2、es的类型

  • 字符串类型
    text、keyword
  • 数值类型
    long、integer、short、byte、double、float、half float、scaled float
  • 日期类型
    date
  • 布尔类型
    boolean
  • 二进制类型
    binary

3、创建字段类型

kibana中es操作 kibana修改es数据_elasticsearch_04


可以通过get请求获得信息

kibana中es操作 kibana修改es数据_elasticsearch_05

4、查看默认的信息

kibana中es操作 kibana修改es数据_搜索_06


kibana中es操作 kibana修改es数据_kibana中es操作_07


如果自己的文档字段没有指定类型,那么es会默认配置字段类型

扩展: 使用GET _cat命令可以查看一些默认的配置

**5、修改 **
提交还是使用PUT 即可 ! 然后覆盖
新的修改方式 POST _update 推荐使用

kibana中es操作 kibana修改es数据_elasticsearch_08

6、删除

DELETE test1

关于文档的基本操作

1、创建数据

PUT school/_doc/1
{
  "name": "张三",
  "age": 15,
  "desc": "法外狂徒张三",
  "tags": ["旅游", "渣男"]
}

2、获取数据

kibana中es操作 kibana修改es数据_搜索_09

3、更新数据 PUT

kibana中es操作 kibana修改es数据_kibana中es操作_10

4.POST _update 推荐使用这种方式

kibana中es操作 kibana修改es数据_搜索_11

5、搜索

简单搜索

GET school/_doc/2

或者

GET school/_doc/_search?q=desc:牛牛

kibana中es操作 kibana修改es数据_字段类型_12

复杂搜索

GET school/_doc/_search
{
  "query":{
    "match":{
      "desc": "牛牛 勇敢"
    }
  },
  "_source": ["name", "desc"]
}

kibana中es操作 kibana修改es数据_字段类型_13


match 可以支持多条件查询,使用空格隔开

排序

GET school/_doc/_search
{
  "query":{
    "match":{
      "desc": "牛牛"
    }
  },
  "sort": [
    {
      "age":{
        "order": "desc"
      }
    }
    ]
}

分页

GET school/_doc/_search
{
  "query":{
    "match":{
      "desc": "牛牛"
    }
  },
  "sort": [
    {
      "age":{
        "order": "desc"
      }
    }
    ],
  "from": 0,
  "size": 1
}

from 起始值 size条数,数据下标从零开始的

布尔值查询

GET school/_doc/_search
{
  "query":{
    "bool":{
      "must":[
        {
          "match": {
            "desc": "牛牛"
          }
        },
        {
          "match": {
            "age": 30
          }
        }
        ]
    }
  }
}

must相当于and

GET school/_doc/_search
{
  "query":{
    "bool":{
      "should":[
        {
          "match": {
            "desc": "牛牛"
          }
        },
        {
          "match": {
            "age": 30
          }
        }
        ]
    }
  }
}

should相当于or

GET school/_search
{
  "query": {
    "bool": {
      "must_not": [
        {
          "match": {
            "desc": "牛牛"
          }
        },
        {
          "match": {
            "age": 18
          }
        }
      ]
    }
  }
}

must_not相当于not

过滤 filter

GET school/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "desc": "牛牛"
          }
        }
      ],
    "filter": {
      "range": {
        "age": {
          "gte": 10,
          "lte": 20
        }
      }
    }
    }
  }
}
  • gt: 大于
  • gte: 大于等于
  • lt: 小于
  • lte: 小于等于

精确匹配 term

term和match的区别在于 term不对查询的关键字分词,match对查询的关键字分词,所以产生查询结果不一样的效果
再加上 字段类型text会分词, keyword不会分词,所以用term和match来分别查询 text和keyword类型的字段会产生不一样的效果

  • 字段类型为keyword, 使用term查询时, 需要两者完全匹配才会被命中(区分大小写)
  • 字段类型为keyword,使用match查询时,还是需要两者完全匹配才会被命中(区分大小写)
  • 字段类型为text,使用term查询时,text分词,term不分词,需要term查询的关键字和text分词后的结果能匹配上的才会被命中(不区分大小写)
  • 字段类型为text,使用match查询时,text分词,match分词,需要text分词后的结果和match分词后的结果能匹配上的才能被命中(不区分大小写)

高亮查询

GET school/_search
{
  "query": {
    "match": {
      "desc": "牛牛"
    }
  },
  "highlight": {
    "fields": {
      "desc": {}
    }
  }
}

kibana中es操作 kibana修改es数据_搜索_14


自定义高亮条件

GET school/_search
{
  "query": {
    "match": {
      "desc": "牛牛"
    }
  },
  "highlight": {
    "pre_tags": "<p class='key', style='color:red'>", 
    "post_tags": "</p>", 
    "fields": {
      "desc": {}
    }
  }
}

kibana中es操作 kibana修改es数据_数据_15