美文网首页
Elasticsearch入门

Elasticsearch入门

作者: gregocean | 来源:发表于2019-04-05 16:47 被阅读0次

    最近处理hive-on-es的问题很棘手,部分原因是对es不熟悉,于是学习一下。

    1. 参考

    中文官方文档
    全文搜索引擎 Elasticsearch 入门教程
    图解Elasticsearch原理
    工作原理若干问

    ES是目前全文搜索引擎的首选,它可以快速地储存、搜索和分析海量数据。维基百科、Stack Overflow、Github 都采用它。ES的底层是开源库 Lucene。但你没法直接用 Lucene,必须自己写代码去调用它的接口。ES是 Lucene 的封装,提供了 REST API 的操作接口。

    2. 概念

    2.1 Node 与 Cluster

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

    2.2 Index

    Elastic 会索引所有字段,经过处理后写入一个反向索引(Inverted Index)。查找数据的时候,直接查找该索引。
    所以,Elastic 数据管理的顶层单位就叫做 Index(索引)。它是单个数据库的同义词。每个 Index (即数据库)的名字必须是小写。
    下面的命令可以查看当前节点的所有 Index。

    > $ curl -X GET 'http://localhost:9200/_cat/indices?v'
    

    2.3 Document

    Index 里面单条的记录称为 Document(文档)。许多条 Document 构成了一个 Index。
    Document 使用 JSON 格式表示,下面是一个例子。

    > {
    >   "user": "张三",
    >   "title": "工程师",
    >   "desc": "数据库管理"
    > }
    

    同一个 Index 里面的 Document,不要求有相同的结构(scheme),但是最好保持相同,这样有利于提高搜索效率。

    2.4 Type

    Document 可以分组,比如weather这个 Index 里面,可以按城市分组(北京和上海),也可以按气候分组(晴天和雨天)。这种分组就叫做 Type,它是虚拟的逻辑分组,用来过滤 Document。

    不同的 Type 应该有相似的结构(schema),举例来说,id字段不能在这个组是字符串,在另一个组是数值。这是与关系型数据库的表的一个区别。性质完全不同的数据(比如productslogs)应该存成两个 Index,而不是一个 Index 里面的两个 Type(虽然可以做到)。

    下面的命令可以列出每个 Index 所包含的 Type。

    > $ curl 'localhost:9200/_mapping?pretty=true'
    

    根据规划,Elastic 6.x 版只允许每个 Index 包含一个 Type,7.x 版将会彻底移除 Type。

    Mac安装

    brew install elasticsearch

    相关文章

      网友评论

          本文标题:Elasticsearch入门

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