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名

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值