其他分享
首页 > 其他分享> > ElasticSearch 入门 (二)

ElasticSearch 入门 (二)

作者:互联网

前言

上一篇记录了版本、工具以及注意的事项。

这篇就对 ElasticSearch 命令的使用进行记录。

与SpringBoot的整合 请见:ElasticSearch 入门 (三)

在 Kibana 开发工具中学习 ElasticSearch 的命令

链接: http://localhost:5601/app/dev_tools#/console

image.png
注意运行时,鼠标光标一定要放在你要运行的指令上。


_doc 为默认的类型。今后好像要取消类型这个东西!!!!


_doc 为默认的类型。今后好像要取消类型这个东西!!!!


_doc 为默认的类型。今后好像要取消类型这个东西!!!!

// PUT 创建命令  索引(student)  类型(_doc)  id(1)
PUT /student/_doc/1  
{
  "name":"张三",
  "age":18
}

返回结果:

// 警告信息:不支持在文档索引请求中指定类型
// 而是使用无类型的端点(/{index}/_doc/{id}, /{index}/_doc,或
/{index}/_create/{id})。
{
"_index" : "student",   // 索引
"_type" : "_doc",       // 类型
"_id" : "1",            // id
"_version" : 1,         // 版本
"result" : "created",   // 操作类型
"_shards" : {           // 分片信息
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 0,
"_primary_term" : 1
}

可以通过 elasticsearch-head 进行查看:

image.png

PUT /student2
{
  "mappings":{
    "properties": {
      "name":{
        "type": "text"
      },
      "age":{
        "type": "long"
      },
      "birthday":{
        "type": "date"
      }
    }
  }
}

查看一下 索引 student2:

GET /student2

image.png

GET _cat/indices?v
DELETE /student1

增删改查命令

PUT /people/_doc/1
{
  "name":"张三",
  "age":30,
  "desc":"不知道如何形容",
  "tags":["丑男","旅游","交友"]
}
GET /people/_doc/1
POST /people/_doc/1/_update
{
  "doc":{
    "name":"张三1"
  }
}

状态会更新

image.png

// 通过 _serarch?q=name:张三 查询条件是name属性有张三的那些数据。
GET /people/_doc/_search?q=name:张三

_score得分,就是根据算法算出和查询条件匹配度高得分就高。

image.png

GET /people/_doc/_search
{
  "query":{                          // 构建的查询条件
    "match": { 
      "name": "张三"
    }
  },
  "sort":[                           // 排序方式 desc asc
    {
      "age":{
        "order":"desc"
      }
    }],
  "_source":["name","desc","age"],   // 需要展示的属性
  "from":0,                          // 分页参数 from   size
  "size":2 
}
// 查询所有 name 属性为“ 张三 “的数据,并且年龄为30岁
GET /people/_doc/_search
{
  "query":{
    "bool": {
      "must": [
        {
          "match": {
            "name": "张三"
          }
        },
        {
          "match": {
            "age": "30"
          }
        }
        ]
    }
  }
}

我们通过在 bool 属性内使用 must 来作为查询条件!看结果,是不是 有点像 and 的感觉,里面的条件需要都满足!

should (or):

// 查询所有 name 属性为“ 张三 “的数据,或者年龄为30岁
GET /people/_doc/_search
{
  "query":{
    "bool": {
      "should": [
        {
          "match": {
            "name": "张三1"
          }
        },
        {
          "match": {
            "age": "30"
          }
        }
        ]
    }
  }
}

must_not (not): 操作同理。

Fitter:

// 名字为张三, 25<=年龄<=30
GET /people/_doc/_search
{
  "query":{
    "bool": {
      "must": [
        {
          "match": {
            "name": "张三"
          }
        }
        ],
        "filter": [
          {
            "range": {
              "age": {
                "gte": 25,      // gt 表示大于
                "lte": 30       // gte 表示大于等于
              }                 // lt 表示小于
            }                   // lte 表示小于等于
          }
        ]
    }
  }
}
// 标签属性中带有 旅游 和 男  多个用空格隔开
GET /people/_doc/_search
{
  "query":{
    "match": {
      "tags": "旅游 男"
    }
  }
}
PUT testdb
{
  "mappings":{
    "properties":{
      "name":{
        "type":"text" 
      },
       "desc":{
          "type": "keyword"
       }
    }
  }
}  
// 添加数据
PUT testdb/_doc/1
{
  "name": "张三喜爱Java name",
  "desc": "张三喜爱Java desc"
}

上述中testdb索引中,字段name在被查询时会被分析器进行分析后匹配查询。而属于keyword类型不会
被分析器处理。

GET testdb/_search
{
  "query":{
    "term": {
      "name": "张"
    }
  }
}

可以查到信息

{
  "query":{
    "term": {
      "desc": "张"
    }
  }
}

不能查看信息,只能通过 张三喜爱Java desc 作为整体去查。

GET _analyze
{
  "analyzer": "keyword",   // "analyzer": "standard",
  "text": "张三喜爱Java desc" 
}

可以通过上述只能去查看一下具体。

总结:keyword 字段类型不会被分析器分析!

GET /people/_doc/_search
{
  "query":{
    "match": {
      "name": "张三"
    }
  },
  "highlight" :{
    "pre_tags": "<b class='key' style='color:red'>",   // 可以自定义
    "post_tags": "</b>",                               // 可以自定义
    "fields":{
      "name":{}
    }
  }
}

返回结果:

image.png

总结:

一个索引下面只能创建一个类型就行了,其中各字段都具有唯一性,如果在创建映射的时候,如果没有指定文档类型,那么该索引的默认索引类型是 _doc ,不指定文档id则会内部帮我们生成一个id字符串。

本文参考了网上的资源。如有侵权请联系。

标签:入门,GET,doc,张三,索引,ElasticSearch,类型,name
来源: https://blog.csdn.net/w1170913576/article/details/122741299