美文网首页
elasticsearch--浅识

elasticsearch--浅识

作者: JM68 | 来源:发表于2018-10-13 16:59 被阅读0次

    推荐初学学习路程
    阮一峰老师的基础介绍
    官方中文权威指南

    elasticsearch是啥?

    Elasticsearch 是一个分布式、可扩展、实时的搜索与数据分析引擎。赋予你的数据以搜索、分析和探索的能力。

    elasticsearch术语

    了解es术语是快速掌握es架构设计的基础

    • Node(节点) 与 Cluster(集群)
      Elastic 本质上是一个分布式数据库,允许多台服务器协同工作,每台服务器可以运行多个 Elastic 实例。
      单个 Elastic 实例称为一个节点(node)。一组节点构成一个集群(cluster)。

    • Index (索引)
      索引就是像关系数据库中的“数据库”。通过映射可以定义成多种类型。索引是一个逻辑命名空间映射到一个或多个主要的分片,可以有零个或多个副本分片
      下面的命令可以查看当前节点的所有 Index:
      $ curl -X GET 'http://localhost:9200/_cat/indices?v'

    • Document(文档)
      Index 里面单条的记录称为 Document(文档)。许多条 Document 构成了一个 Index(索引)。同一个 Index 里面的 Document,不要求有相同的结构(scheme),但是最好保持相同,这样有利于提高搜索效率。
      Document 使用 JSON 格式表示,例:

    {
       "user": "张三",
       "title": "工程师",
       "desc": "数据库管理"
     }
    
    • Field(字段)
      文档中包含的一组字段或键值对。字段的值可以是一个简单的(标量)值(如字符串,整数,日期),或者一个嵌套的结构就像一个数组或对象。一个字段就是类似关系数据库表中的一列。

    • Id(标识)
      每个文档ID标识了一个文档。一个文档的索引/类型/ ID必须是唯一的。如果没有提供ID,将是自动生成。

    • Source field(源字段)
      默认情况下,你的JSON文档将被索引存储在_source字段里面,所有的get(获取)和search(搜索)请求将返回的该字段。这将允许你直接从搜索结果中访问到源数据,而不需要再次发起请求检索。
      注:索引将返回完整的的JSON字符串给你,即使它包含无效的JSON。此字段里的内容不表示任何该对象里面的数据如何被索引。

    • Term(术语)
      在elasticsearch里,术语(term)是一个被索引的精确值。术语 foo, Foo,FOO 是不想等的。术语(即精确值)可以使用“term”查询接口来查询。

    • Text(文本)
      文本(或全文)是普通非结构化的文本,如本段。默认情况下,文本将被分析成术语,术语才是实际存储在索引中。文本字段在索引时需要进行分析,以便全文搜索,全文查询的关键字在搜索时,必须分析产生(搜索)与索引时相同的术语。

    • Type(类型)
      Document 可以分组,如weather这个 Index 里面,可以按城市分组(北京和上海),也可以按气候分组(晴天和雨天)。这种分组就叫做 Type,它是虚拟的逻辑分组,用来过滤 Document。不同的 Type 应该有相似的结构(schema),举例来说,id字段不能在这个组是字符串,在另一个组是数值。这是与关系型数据库的表的一个区别。性质完全不同的数据(比如products和logs)应该存成两个 Index,而不是一个 Index 里面的两个 Type(虽然可以做到)。

    下面的命令可以列出每个 Index 所包含的 Type。
    $ curl 'localhost:9200/_mapping?pretty=true'
    根据规划,Elastic 6.x 版只允许每个 Index 包含一个 Type,7.x 版将会彻底移除 Type。

    • Mapping(映射)
      映射是像关系数据库中的”模式定义“。每个索引都有一个映射,它定义了每个索引的类型,再加上一些索引范围的设置。映射可以被明确地定义,或者在一个文档被索引的时候自动生成。

    • Analysis(分析)
      分析的过程就是将全文(full text)转换成 术语/分词(terms)。 这取决于使用那个分析器

    • Shard(分片)
      一个分片是一个单一的Lucene的实例。这是一个低级别的通过ElasticSearch自动管理的“工作者”单元。索引是一个逻辑命名空间指向主分片和副本分片。索引的主分片和副本分片的数量需要明确的指定。然而你的代码应该只处理一个索引。Elasticsearch分配集群中所有节点的分片。在节点出现故障或增加新节点的时候,可以自动的将一个节点上的分片移动到另一个节点上。

    • Primary shard(主分片)
      每个文档都存储在一个主要分片上。当你索引一个文档时,索引首先生成在主分片上,然后才到主分片的所有副本上。默认情况下,索引有5个主分片。可以指定更多或更少的主分片来适应索引可以处理的文档数。一旦创建了索引,就不能改变索引中主分片的数量。

    • Replica shard(副本分片)
      每个主分片可以有零个或多个副本。副本是主分片的一个拷贝,有两个作用:

      • 1、故障转移:如果主分片有问题,副本分片可以提升为主分片;
      • 2、提高性能:获取和搜索请求可以处理主分片或副本分片。
        默认情况下,每个主分片有一个副本,不过索引的副本数量可以动态地改变。在同一个节点上,一个副本分片将永远不会和其主分片一起运行。
    • Routing(路由)
      当你索引一个文档,它是存储在一个主分片里。这分片的选择是通过哈希的路由值。默认情况下,路由值来自文档的ID;如果该文档指定了父文档,则使用父文档的ID(以确保这个子文档和父文件都存储在相同的分片上)。这个路由值可以在索引的时候,通过指定数值或者配置字段映射来覆盖。

    常用命令

    • 创建索引
      $ curl -X PUT 'localhost:9200/weather'
      服务器返回一个 JSON 对象,里面的acknowledged字段表示操作成功。
    {
      "acknowledged":true,
      "shards_acknowledged":true
    }
    
    • 删除索引
      $ curl -X DELETE 'localhost:9200/weather'

    • 新增记录

    $ curl -X PUT 'localhost:9200/weather/clouds/1' -d '
        {
          "date": "2018-10-10",
          "title": "多云",
          "desc": "天气转冷,添加衣物"
        }'
    

    /weather/clouds/1 weather既是索引名 clouds为文档名 1为设定Id为1

    • 查找记录
      向/Index/Type/Id发出 GET 请求,就可以查看这条记录。
      $ curl 'localhost:9200/weather/clouds/1?pretty=true'

    • 删除记录
      $ curl -X DELETE 'localhost:9200/weather/clouds/1'

    • 数据查询
      使用 GET 方法,直接请求/Index/Type/_search,就会返回所有记录。

    相关文章

      网友评论

          本文标题:elasticsearch--浅识

          本文链接:https://www.haomeiwen.com/subject/fogoaftx.html