首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Elasticsearch 学习一(基础入门).

Elasticsearch 学习一(基础入门).

作者头像
JMCui
发布2020-11-09 18:37:36
9840
发布2020-11-09 18:37:36
举报
文章被收录于专栏:JMCuiJMCui

一、Elasticsearch 简介

你可以这么形容 Elasticsearch :

  • 一个分布式的实时文档存储,每个字段都可以被索引与搜索
  • 一个分布式实时分析搜索引擎
  • 能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据

Elasticsearch 是一个实时分布式搜索和分析引擎,建立在一个全文搜索引擎库 Apache Lucene 基础之上,而 Lucene 是当下最先进、高性能、全功能的搜索引擎库。

但是 Lucene 仅仅只是一个库。为了充分发挥其功能,你需要使用 Java 并将 Lucene 直接集成到应用程序中。 更糟糕的是,您可能需要获得信息检索学位才能了解其工作原理。因为 Lucene 非常复杂。

Elasticsearch 也是使用 Java 编写的,它的内部使用 Lucene 做索引与搜索,但是它的目的是使全文检索变得简单,通过隐藏 Lucene 的复杂性,取而代之的提供一套简单一致的 RESTful API。

  • 维基百科使用 Elasticsearch 提供全文搜索并高亮关键字,以及输入实时搜索(search-asyou-type)和搜索纠错(did-you-mean)等搜索建议功能。
  • 英国卫报使用 Elasticsearch 结合用户日志和社交网络数据提供给他们的编辑以实时的反馈,以便及时了解公众对新发表的文章的回应。
  • StackOverflow 结合全文搜索与地理位置查询,以及 more-like-this 功能来找到相关的问题和答案。
  • Github 使用 Elasticsearch 检索 1300 亿行的代码。
  • ...

Elasticsearch 不仅用于大型企业,它还让像 DataDog 以及 Klout 这样的创业公司将最初的想法变成可扩展的解决方案,Elasticsearch 可以在你的笔记本上运行,也可以在数以百计的服务器上处理 PB 级别的数据。

二、Elasticsearch 安装

三、Elasticsearch 基本概念

文档(Document)

JSON 格式,Elasticsearch 存储的最小单位,可以理解为是关系型数据库中的一条记录,每个文档都有自己的一个 unique id。

文档元数据,用于标注文档的相关信息

  • _index:文档所属的索引名
  • _type:文档所属的类型名
  • _source:文档的原始Json数据
  • _id:文档唯一id
  • _version:文档版本信息
  • _score:文档相关度打分

索引(Index)

索引是文档的一个容器,类比于关系型数据库的数据库概念,索引中的 setting 里定义有多少个 shards 来存储索引数据,数据是如何分布。

因此 每个索引(Index)包含多个类型(Type),不同的类型存储着多个文档(Document),每个文档又有多个属性(Field)

集群、节点、分片、副本

一个节点是一个 Elasticsearch 实例。Master节点,主要负责索引创建删除,维护集群中节点。分片分配;Data节点,存储数据节点;协调节点,负责接收客户端请求,分发请求到其他节点最后将数据汇集响应给客户端;

四、Elasticsearch 数据和检索

Elasticsearch 是面向文档的,使用 JSON 作为文档的序列化格式,而且 Elasticsearch 不仅存储文档,还索引每个文档的内容,使之可以被检索、排序和过滤,而这也是 Elasticsearch 能支持复杂全文检索的原因。

我们可以使用 RESTful API 通过端口 9200(默认)和 Elasticsearch 进行通信,可以使用 kibana 访问 Elasticsearch ,甚至可以直接使用 curl 命令来和 Elasticsearch 交互。

curl -X<VERB> '<PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING>' -d '<BODY>'

VERB:适当的 HTTP 方法或谓词 : GET、POST、PUT、HEAD 或者 DELETE。 PROTOCOL:http 或者 https。 HOST:Elasticsearch 集群中任意节点的主机名,或者用 localhost 代表本地机器上的节点。 PORT:Elasticsearch HTTP 服务的端口号,默认是 9200. PATH:API 的终端路径(例如 _count 将返回集群中文档数量)。Path 可能包含多个组件,例如:_cluster/stats 和 _nodes/stats/jvm 。 QUERY_STRING:可选,查询字符串参数 (例如 ?pretty 将格式化地输出 JSON 返回值,使其更容易阅读) BODY:可选,一个 JSON 格式的请求体

更多 DSL 语法可以参考:https://www.elastic.co/guide/en/elasticsearch/reference/7.9/search-search.html

如果你正在使用 Java,在代码中你可以使用 Elasticsearch 内置的两个客户端:

节点客户端(Node client) 节点客户端作为一个非数据节点加入到本地集群中。换句话说,它本身不保存任何数据,但是它知道数据在集群中的哪个节点中,并且可以把请求转发到正确的节点。

传输客户端(Transport client) 轻量级的传输客户端可以将请求发送到远程集群。它本身不加入集群,但是它可以将请求转发到集群中的一个节点上。

两个 Java 客户端都是通过 9300 端口并使用 Elasticsearch 的原生传输协议和集群交互。集群中的节点通过端口 9300 彼此通信。如果这个端口没有打开,节点将无法形成一个集群。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-11-08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Elasticsearch 简介
  • 二、Elasticsearch 安装
  • 三、Elasticsearch 基本概念
    • 文档(Document)
      • 索引(Index)
        • 集群、节点、分片、副本
        • 四、Elasticsearch 数据和检索
        相关产品与服务
        Elasticsearch Service
        腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档