伍佰目录 短网址
  当前位置:海洋目录网 » 站长资讯 » 站长资讯 » 文章详细 订阅RssFeed

【小白笔记】Elastic Search使用Rest风格请求的CRUD

来源:本站原创 浏览:159次 时间:2021-08-17
Rest风格说明methodurl地址描述PUTlocalhost:9200/索引名称/类型名称/文档id创建文档(指定文档id)POSTlocalhost:9200/索引名称/类型名称创建文档(随机文档ID)POSTlocalhost:9200/索引名称/类型名称/文档id/_update修改文档DELETELocalhost:9200/索引名称/类型名称/文档id删除文档GETLocalhost:9200/索引名称/类型名称/文档id查询文档通过文档IDPOSTLocalhost:9200/索引名称/类型名称/_search查询所有数据关于索引以及文档的基本操作增
  1. 创建一个文档

    PUT /索引名/--类型名--/文档id
    {
      请求体
    }

    ![](/Users/weihaolee/Library/Application Support/typora-user-images/截屏2021-02-26 12.54.58.png)

    完成了自动增加索引  数据也成功的添加了

  2. 配置字段类型

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

查看数据

POST /test3/_search

查看字段类型

GET test2

默认字段类型

  • 添加数据
PUT /test3/_doc/1
{
  "name": "SkyID",
  "age": 21,
  "birth": "2000-08-23"
}
  • 查看自动分配的字段类型

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

扩展:通过命令elastic search索引情况 通过GET _cat/ 可以获取当前es的更多信息

  • 根据指定内容匹配

    #根据name进行搜索(简单查询)
    GET /sky/user/_search?q=name:Sky
    #对于复杂条件标准写法 _source选择展示的数据 sort为排序 
    #from和size为分页功能  
    #from表示从第几个数据开始 size表示返回多少条数据(单页面数据)
    GET /sky/user/_search
    {
      "query":{
        "match": {
          "name":"Sky"
        }
      },
      "_source":["name","desc"],
      "sort":[
          {
            "age":{
              "order": "desc"
            }
          }
        ],
       "from": 0,
        "size": 1
    }
  • 布尔值查询

    多条件查询 must(相当于and),所有的条件都要符合

    GET /sky/_search
    {
      "query":{
        "bool": {
          "must": [
            {
              "match": {
                "name": "潭"
              }
            },
            {
              "match": {
                "age": "2"
              }
            }
          ]
        }
      }
    }

    多条件查询 should(相当于or),满足一个就可以

    GET /sky/_search
    {
      "query":{
        "bool": {
          "should": [
            {
              "match": {
                "name": "潭"
              }
            },
            {
              "match": {
                "age": "2"
              }
            }
          ]
        }
      }
    }

    多条件查询 must_not(相当于not),满足一个就可以

    GET /sky/_search
    {
      "query":{
        "bool": {
          "must_not": [
            {
              "match": {
                "name": "潭"
              }
            },
            {
              "match": {
                "age": "2"
              }
            }
          ]
     ����,�ױ�   }
      }
    }

    过滤器 filter (gt大于、gte大于等于、lt小于、lte小于等于、eq等于)

    GET /sky/_search
    {
      "query":{
        "bool": {
          "must": [
            {
              "match": {
                "name": "潭"
              }
            }
          ],
          "filter": [
            {
              "range": {
                "age": {
                  "gt": 10
                }
              }
            }
          ]
        }
      }
    }

    多条件查询 多个条件使用空格隔开进行查询 只要满足其一便可被查出来 通过分值进行基本的判断

    GET /sky/_search
    {
      "query":{
       "match": {
         "tags": "男 王"
       }
      }
    }

  • 精确查询

    term查询是直接通过倒排索引指定的词条进程精确查找的

    关于分词:

    term,直接查询精确  搭配keyword使用

    match 会使用分词器解析 (先分析文档,然后在通过分析的文档进行查询)

    「两个类型 text keyword」

    • 创建测试文档

      # 设定索引类型
      PUT /testdb
      {
        "mappings": {
          "properties": {
            "name":{
              "type": "text"
            },
            "desc": {
              "type": "keyword"
            }
          }
        }
      }

      # 添加两条数据用于测试
      PUT /testdb/_doc/1
      {
        "name": "李维昊",
        "desc": "我是一个程序员"
      }

      PUT /testdb/_doc/2
      {
        "name": "李维昊2",
        "desc": "我是一个程序员2"
      }
    • 查询name(text类型)

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

      两条信息均有返回

    • 查询desc(keyword类型)

      GET testdb/_search
      {
        "query": {
          "term": {
            "desc": "我是一个程序员"
          }
        }
      }

      返回结果仅为一个

      并且如果我们改为单字搜索发现

      GET testdb/_search
      {
        "query": {
          "term": {
            "desc": "程"
          }
        }
      }

      发现无返回结果

  • 高亮查询

    GET testdb/_search
    {
      "query": {
        "match": {
          "name": "李维昊"
        }
      },
      "highlight": {
        "fields": {
          "name": {}
        }
      }
    }

    查看返回结果发现「李维昊」添加了标签

    同样的我们可以自定义返回标签

    GET testdb/_search
    {
      "query": {
        "match": {
          "name": "李维昊"
        }
      },
      "highlight": {
        "pre_tags": "<p>", 
        "post_tags": "</p>", 
        "fields": {
          "name": {}
        }
      }
    }

在Elastic Search当中我们有可以使用两种方式进行数据修改

  1. 重新使用PUT值进行添加数据

    首先查询文档当前内容

    POST /test3/_search

    使用PUT重新添加数据(将名字修改)

    PUT /test3/_doc/1
    {
      "name": "WeiHao.L",
      "age": 21,
      "birth": "2000-08-23"
    }

    执行指令,通过es返回的json信息我们可以看到其中的version版本变为了2。证明我们此索引数据进行了更新

    再次使用search进行查询,更新成功

    但是这种方式的缺点为如果我们忘记输入某一项的值 会出现单条记录被清空的情况(如图 name被清空)

  2. 使用POST方法进行update

    此方法仅需将需要更新的数据进行发送请求即可

    POST /test3/_doc/1/_update
    {
      "doc" :{
        "name": "Sky"
      }
    }

    更新成功

DELETE test1

  推荐站点

  • At-lib分类目录At-lib分类目录

    At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

    www.at-lib.cn
  • 中国链接目录中国链接目录

    中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

    www.cnlink.org
  • 35目录网35目录网

    35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

    www.35mulu.com
  • 就要爱网站目录就要爱网站目录

    就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

    www.912219.com
  • 伍佰目录伍佰目录

    伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

    www.wbwb.net