kibana 清空索引下的全部数据 kibana 删除数据_服务器


点击左侧的这个小图标即可开始

node节点:单个的Elaticsearch服务器

index索引:相当于关系型数据库中的数据库,注意索引名称小写

document文档:索引中的单条记录称为文档,文档使用的是JSON格式表示

type类型:虚拟的逻辑分组,用于过滤文档,相当于MySQL中的表,不同的是type中只能存储一种数据

文档元数据:文档元数据为 _index, _type,_id,三者用于表示一个文档,index表示文档存放,type表示文档对象类型, id为文档的唯一标识

GET:以 GET 方式进行请求,一般用于数据查询。
POST:以 POST 方式进行请求,一般用于查询数据、有时也用作新增数据和修改数据。
PUT:以 PUT 方式进行请求,一般用于添加数据、修改数据。
DELETE:以 DELETE 方式进行请求,一般用于删除数据。

添加索引
PUT /test1
{
  "settings": {
    "number_of_shards": 3, "number_of_replicas": 2
  },
  "mappings": {
    "properties": {
      "name":{
        "type":"text"
      }
    }
  }
}

索引的名称为test1
number_of_shards:数据拆分后的各个部分,可以部署在多台服务器上,分片的数量为3,分片的数量一旦确定了就不能修改
number_of_replicas: 每个分片的复制,保存的数据一样,类似集群

要注意的是:Elasticsearch本身就是分布式的,因此即便你只有一个节点,Elasticsearch默认也会对你的数据进行分片和副本操作,当你向集群添加新数据时,数据也会在新加入的节点中进行平衡。

点击右侧开始图标

kibana 清空索引下的全部数据 kibana 删除数据_elasticsearch_02

右侧出现如下则创建成功

kibana 清空索引下的全部数据 kibana 删除数据_数据_03


查看某个索引

GET /test1

查看所有索引(在最下面可以找到我们新创建的索引)

GET *

删除某个索引

DELETE test1

进行文档操作(就是插入一条一条的数据)
新增

POST /test1/_doc
{
  "name":"hh"
}

新增后会出现一个id

kibana 清空索引下的全部数据 kibana 删除数据_服务器_04


复制这个id进行查询

查看新增的

GET /test1/_doc/6SpS83EBLtX7E7BaZOxv

kibana 清空索引下的全部数据 kibana 删除数据_Elastic_05


修改新增的

PUT /test1/_doc/6SpS83EBLtX7E7BaZOxv
{
  "name":"bb"
  
}

修改后再进行查询发现已经发现改变

kibana 清空索引下的全部数据 kibana 删除数据_kibana 清空索引下的全部数据_06


删除

DELETE /test1/_doc/6SpS83EBLtX7E7BaZOxv

查询所有(默认只会查10,如果想要多个就得用from和size)

GET /test1/_search

接下来先新增多个值:a,aa,你是aa,小米手机,小米电视…
使用match进行查询

match 用于匹配度查询(对条件值的每个汉字都拆分进行匹配,对英文字母不拆分)

GET /test1/_search
{
  "query": {
    "match": {
      "name": "a"
    }
  }
}

当我们查a的时候

kibana 清空索引下的全部数据 kibana 删除数据_数据_07


值出现了,继续查询aa

kibana 清空索引下的全部数据 kibana 删除数据_数据_08


发现与aa相关的都出现了,所以这里可以看出不对英文字母进行拆分并且是精准匹配英文字母和带它的值,接下来测试汉字

查询米

kibana 清空索引下的全部数据 kibana 删除数据_数据_09


与米相关的值都出现了,继续查询小米电视

kibana 清空索引下的全部数据 kibana 删除数据_数据_10


结果依然相同

term

查询字母的时候精准查询,但查询汉字的时候就不是精准查询
term 精准查询(elasticsearch里默认的IK分词器是会将每一个中文都进行了分词的分割,所以你直接想查一整个词,或者一整句话是无返回结果的。)

GET /test1/_search
{
  "query": {
    "term": {
      "name": "a"
    }
  }
}

继续查询a

kibana 清空索引下的全部数据 kibana 删除数据_数据_11


结果为只带a单个字母的,查询aa

kibana 清空索引下的全部数据 kibana 删除数据_服务器_12


带aa的都出来了,查询米

kibana 清空索引下的全部数据 kibana 删除数据_kibana 清空索引下的全部数据_13


带米的都出来了,精准查询小米电视

kibana 清空索引下的全部数据 kibana 删除数据_elasticsearch_14


terms:多词条

GET /test1/_search
{
  "query": {
    "terms": {
      "name": [
        "小"
      ]
    }
  }
}

查询结果为:

kibana 清空索引下的全部数据 kibana 删除数据_kibana 清空索引下的全部数据_15


增加一个新的查询条件米

GET /test1/_search
{
  "query": {
    "terms": {
      "name": [
        "小",
        "米"
      ]
    }
  }

结果:

kibana 清空索引下的全部数据 kibana 删除数据_Elastic_16

range 对比大小 “gte”表示”大于等于”、”lte”表示“小于等于”

GET /test1/_search
{
  "query": {
    "range": {
      "price": {
        "gte": 2,
        "lte": 1000
      }
    }
  }
}

这里我增加一个新字段price,并添加许多值,查询结果为:

kibana 清空索引下的全部数据 kibana 删除数据_elasticsearch_17

多个条件查询
must:文档必须匹配这些条件才能被包含进来。
must_not:文档必须不匹配这些条件才能被包含进来。
should:如果文档满足 should 内的条件,将为该文档增加_score,否则,无任何影响

GET /test1/_search
{
  "query": {
    "bool": {
      "must_not": [
        {
          "match": {
            "name": "米"
          }
        }
      ]
    }
  }
}

不包含米的:

kibana 清空索引下的全部数据 kibana 删除数据_Elastic_18


改为包含米的:

GET /test1/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "name": "米"
          }
        }
      ]
    }
  }
}

结果:

kibana 清空索引下的全部数据 kibana 删除数据_Elastic_19

使用from和size命令分页

GET /test1/_search
{
  "from": 0,
  "size": 2
  , "query": {
    "bool": {
      "must": [
        {
          "match": {
            "name": "米"
          }
        }
      ]
    }
  }
}

结果:

kibana 清空索引下的全部数据 kibana 删除数据_kibana 清空索引下的全部数据_20