栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

ElasticSearch简介

ElasticSearch简介

参考:
http://www.ruanyifeng.com/blog/2017/08/elasticsearch.html
https://cloud.tencent.com/developer/article/1583402
https://zhuanlan.zhihu.com/p/54384152
https://kalasearch.cn/blog/chapter2-run-elastic-search-locally/
https://www.elastic.co/cn/elasticsearch/
https://www.jianshu.com/p/d48c32423789

写这篇文章之前,我对ES的印象仅限于它能像数据库一样进行增删改查!

  1. ElasticSearch是什么?
    看这里: https://cloud.tencent.com/developer/article/1583402
    Elasticsearch 是一个实时的分布式存储、搜索、分析的引擎。
    相对于数据库,Elasticsearch的强大之处就是可以模糊查询。

  2. ElasticSearch基本概念
    参考: https://www.jianshu.com/p/d48c32423789
    https://blog.csdn.net/CrankZ/article/details/80615789
    2.1 全文搜索(Full-text Search)
    全文检索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,
    当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。
    在全文搜索的世界中,存在着几个庞大的帝国,也就是主流工具,主要有:
    Apache Lucene,Elasticsearch,Solr,Ferret

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

    2.3 正排索引(forward index) 和 倒排索引(Inverted Index)
    正排索引(forward index):
    正排索引是从文档角度来找其中的单词,表示每个文档(用文档ID标识)都含有哪些单词,
    以及每个单词出现了多少次(词频)及其出现位置(相对于文档首部的偏移量)。所以每次搜索都是遍历所有文章。
    倒排索引(Inverted Index)
    倒排索引是从单词角度找文档,标识每个单词分别在那些文档中出现(文档ID),
    以及在各自的文档中每个单词分别出现了多少次(词频)及其出现位置(相对于该文档首部的偏移量)。
    简单记为:
    正排索引:文档 —> 单词
    倒排索引:单词 —> 文档

    2.3 索引(Index)
    Elasticsearch 数据管理的顶层单位就叫做 Index(索引),相当于关系型数据库里的数据库的概念。另外,每个Index的名字必须是小写。

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

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

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

    和mysql类比就是(可以简单的理解 但差别也是挺大的)
    索引Index:相当于数据库(db)
    类型 Type: 相当于表(table)
    文档 document:相当于行(row)
    如果我们要访问一个文档元数据应该包括囊括 index/type/id 这三种类型

    2.6 分词器
    参考: https://www.cnblogs.com/haixiang/p/11810799.html
    安装: 首先我们访问 https://github.com/medcl/elasticsearch-analysis-ik/releases 下载与es对应版本的中文分词器。将解压后的后的文件夹放入es根目录下的plugins目录下,重启es即可使用。

3 kibana的使用
kibana.yml的 elasticsearch.hosts, elasticsearch.username, elasticsearch.password 填入对应的信息(同一台机器上localhost要写成elasticsearch)
参考: https://www.cnblogs.com/chenqionghe/p/12503181.html
通过 DevTools, 我们可以非常方便的操作 ES 的 API, 如查询集群节点信息、查询索引数据信息等,如下所示:
使用Kibana操作es的api https://blog.csdn.net/Fzqx_/article/details/88576361
查询 所有索引: GET _cat/indices?v
查询索引的所有内容: GET employee_info/_search
按照id 查询: GET index名/_doc/{_id}
删除索引 DELETE index名

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/467260.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号