• elasticsearch专用术语及基本用法


    前言

    昨天我们分享search的下载安装过程。同时进行了一些简单测试,今天我们来看下search的专业术语和基本用法。根据官方对elasticsearch的定位,我们可以说elasticsearc是一套面向文档(json)的解决方案。

    专用术语

    索引

    索引我们昨天已经说过了,它其实就相当于传统的关系型数据库,一个 索引 类似于传统关系数据库中的一个 数据库 ,是一个存储关系型文档的地方。 索引 (index) 的复数词为 indicesindexes

    除此自外,索引还可以当作动词来使用。索引一个文档 就是存储一个文档到一个 索引 (名词)中以便被检索和查询。这非常类似于 SQL 语句中的 INSERT 关键词,除了文档已存在时,新文档会替换旧文档情况之外。

    倒排索引

    关系型数据库通过增加一个 索引 比如一个 B树(B-tree)索引 到指定的列上,以便提升数据检索速度。Elasticsearch Lucene 使用了一个叫做 倒排索引 的结构来达到相同的目的。

    默认的,一个文档中的每一个属性都是 被索引 的(有一个倒排索引)和可搜索的。一个没有倒排索引的属性是不能被搜索到的。

    基本用法

    新增数据(创建索引)

    关于创建索引其实我们昨天已经演示过了,但是昨天是为了测试,所以今天我们还需要再次补充说明下。

    首先创建所以的语法如下:

    curl -X PUT "localhost:9200/megacorp/employee/2?pretty" -H 'Content-Type: application/json' -d'
    {
        "name" :  "syske",
        "age" :        25,
        "about" :      "I love to read book",
        "interests": [ "sports", "music" ]
    }'
    

    这里我们简答介绍下上面的请求参数:

    • megacorp:表示索引名称,也就相当于我们传统关系型数据库中的数据库,可以根据自己的需要指定
    • employee:官方给出的说明是类型名称,但我觉得应该叫子索引更合理,就类似于传统数据库下面的数据表
    • 1:表示我们当前数据的id,也就是这条数据对应的唯一索引
    • 请求体:下面的json表示我们的请求体

    昨天我们说了,es本身只支持GET, PUT, DELETE, HEAD,这里的PUT既可以表示新增,也可以表示更新,如果记录存在,则进行更新操作,否则进行新增操作。关于这一点我们昨天也已经演示过了,这里就不再赘述。

    为了方便测试,我们后期的内容直接在git bash下执行curl命令了,windowscmd体验太差:

    从上面返回结果来看,当文档(json数据)不存在的时候,它返回的resultcreated,但如果文档已经存在,它返回的结果是updated:

    数据检索

    数据检索也很简单,直接发送GET请求即可:

    curl -X GET "localhost:9200/megacorp/employee/1?pretty"
    

    返回结果如下:

    {
      "_index" : "megacorp",
      "_type" : "employee",
      "_id" : "1",
      "_version" : 1,
      "_seq_no" : 0,
      "_primary_term" : 1,
      "found" : true,
      "_source" : {
        "name" : "syske",
        "age" : 25,
        "about" : "I love to read book",
        "interests" : [
          "sports",
          "music"
        ]
      }
    }
    

    我们先解释下返回结果:

    • _index:索引
    • _type:数据类型
    • _id:数据id,这个是我们新增数据的时候指定的
    • _version:数据版本,新增之后默认版本号为1,每更新一次,数据库版本加一
    • _seq_no:序号,主要用来记录新增、更新和删除的操作顺序,对数据而言,通过这个字段可以确定数据创建顺序(我自己觉得可以)
    • _primary_term:和集群相关的一个数据,应该主要是为了标记节点号,根据资料显示,这个数据在重启后会发生变化。这个参数后面再研究吧。
    • found:表示是否有搜索到数据,如果未搜索到结果为false
    • _source:查询到的结果

    这里说下请求地址后面这个参数pretty,这个参数的意思是对请求参数和返回结果进行美化,如果没有这个参数,我们看到的数据就会是一坨,不方便查看:

    加了这个参数,返回结果就好看多了:

    数据更新

    更新操作和新增是一模一样的,这里我们就不做过多说明,唯一的区别是,如果返回结果resultupdated,则表示数据更新成功:

    数据删除

    删除数据和查询数据很像,只需要把GET替换成DELETE即可:

     curl -X DELETE "localhost:9200/megacorp/employee/4?pretty" -H 'Content-Type: application/json'
    

    返回结果resultdeleted表示删除成功。

    如果数据不存在,则返回结果为not_found:

    总结

    由于时间的关系,今天暂时先分享这么多,专业术语我们暂时只说了索引,基本用法这块现在也之分享了基本的增删改查,确实节奏有点慢,但是暂时也没办法了,今天一整天都在处理oncall问题,也抽不出时间搞其他内容了,不过马上就周末了,两天时间不说把elasticsearch吃透,但是梳理下相关知识点,对它进行一个简单的研究还是可以的。
    好了,今天就先到这里吧,想了解更多知识点的小伙伴可以自己看官方文档:

    https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html
    
  • 相关阅读:
    官方文档翻译-Today
    RAC & MVVM 学习资料整理
    35种常用字体
    中文字体的种类
    自言自语(三)--部分中文字体
    自言自语(二)--英文无衬线体和有衬线体
    sketch字体设置技巧(一)---通过锚点改变字体形态
    提高设计档次的8个方法
    知识汇总09~bootstrap-select在Vue中的封装
    知识汇总08~字符串截取
  • 原文地址:https://www.cnblogs.com/caoleiCoding/p/15195097.html
Copyright © 2020-2023  润新知