Rest风格说明

methodurl地址描述
PUTlocalhost:9200/索引名称/类型名称/文档id创建文档(指定文档id)
POSTlocalhost:9200/索引名称/类型名称创建文档(随机文档ID)
POSTlocalhost:9200/索引名称/类型名称/文档id/_update修改文档
DELETELocalhost:9200/索引名称/类型名称/文档id删除文档
GETLocalhost:9200/索引名称/类型名称/文档id查询文档通过文档ID
POSTLocalhost: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
©著作权归作者所有:来自51CTO博客作者mob604756f85007的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 变量的类型转换方式 变量值传递与值引用的区别 变量的作用域 p
  2. PHP入门之 变量与常量
  3. 1. 变量的类型转换方式 2. 变量值传递与值引用的区别 2. 变量的
  4. 210426 PHP 输出方法,数据类型,变量,作用域,常量
  5. 【数据库架构】Apache Couchdb 最终一致性
  6. 4.13 在vSphere环境中创建不同类型的文件夹
  7. 语法基础: 使用不同的数据类型标记数组
  8. SQLyog
  9. 浅谈 Integer 类

随机推荐

  1. 太强了!这款轻量级的数据库中间件完美解决
  2. 更轻量级的 V8 引擎[每日前端夜话0xC8]
  3. JavaScript中的异步生成器函数[每日前端
  4. 编码与编程的区别是什么?[每日前端夜话0xC
  5. 太强了!这两款数据库中间件,完美解决 Sprin
  6. Spring Boot 项目中的三种多数据源方案,一
  7. 丢弃掉那些 BeanUtils 工具类吧,MapStruct
  8. 用 NodeJS 充分利用多核 CPU 的资源[每日
  9. IDEA + Spring Boot 的三种热加载方案,看
  10. 用 cURL 请求测试 ETag 浏览器缓存[每日