Elasticsearch入门

1、介绍

elasticsearch是一个开源的分布式搜索分析引擎,被用作全文检索、结构化搜索、分析这三个功能的组合。它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。

2、核心概念

1)index索引
一个索引就是一个拥有几分相似特征的文档集合,类比mysql中的数据库。
2)type类型(版本8之后废弃)
一个类型就是索引的一个逻辑上的分类或者分区,类比mysql中的表。
3)document文档
一个文档是一个可被索引的基础信息单元,文档以JSON的的格式表示,类比mysql中的一行数据。
4)filed字段
相当于数据表的字段,对文档数据根据不同属性进行的分类标识,类比mysql中列属性。
5)mapping映射
mapping是处理数据的方式和规则方面做一些限制,如某个字段的数据类型、默认值、分析器、是否被索引等等,这些都是映射里面可以设置的,其它就是处理es里面数据的一些使用规则设置也叫做映射,按着最优规则处理数据对性能提高很大,因此才需要建立映射,并且需要思考如何建立映射才能对性能更好。相当于mysql中的创建表的过程,设置主键外键等等
6)cluster集群
一个集群就是由一个或多个节点组织在一个,它们共同持有整个的数据,并一起提供索引和搜索功能。
7)node节点
一个节点是集群中的一个服务器,作为集群的一部分,它存储数据,参与集群的索引和搜索功能。
8)alias别名
一组数据流或者索引的二级名字
9)data stream 数据流
7.9版本的新特性,Data stream 使你可以跨多个索引存储只追加数据的时间序列数据,同时为请求提供唯一的一个命名资源。 data stream 非常适合日志,事件,指标以及其他持续生成的数据。

对比关系性数据库
在这里插入图片描述
注:*Type在8之后已经删除

3、安装和启动

安装步骤:

  • 配置Java环境,不同版本对于JDK版本的要求不同
  • 下载安装(macOS)
    curl -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.7.1-darwin-x86_64.tar.gz curl https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.7.1-darwin-x86_64.tar.gz.sha512 | shasum -a 512 -c - tar -xzf elasticsearch-8.7.1-darwin-x86_64.tar.gz cd elasticsearch-8.7.1/
  • 启动命令
    ./bin/elasticsearch
  • 验证启动
    curl --cacert $ES_HOME/config/certs/http_ca.crt -u elastic https://localhost:9200
    可以看到如下返回

{
“name” : “Cp8oag6”,
“cluster_name” : “elasticsearch”,
“cluster_uuid” : “AT69_T_DTp-1qgIJlatQqA”,
“version” : {
“number” : “8.7.1”,
“build_type” : “tar”,
“build_hash” : “f27399d”,
“build_flavor” : “default”,
“build_date” : “2016-03-30T09:51:41.449Z”,
“build_snapshot” : false,
“lucene_version” : “9.5.0”,
“minimum_wire_compatibility_version” : “1.2.3”,
“minimum_index_compatibility_version” : “1.2.3”
},
“tagline” : “You Know, for Search”
}

出现输入用户名和密码情况,可以配置config/elasticsearch.yml中的xpack.security.enabled: false

4、客户端操作

  • 使用Restful接口直接访问
    Talend API tester或postman

  • 可视化工具
    Kibana是一个针对ElasticSearch的开源分析及可视化平台,用来搜索、查看交互存储在ElasticSearch索引中的数据

5、API说明

索引相关API

创建索引

PUT http://localhost:9200/my_index

删除索引

DELETE http://localhost:9200/

获取索引

GET http://localhost:9200/

文档相关API

创建文档

PUT http://localhost:9200//_doc/<_id>
POST //_doc/
PUT //_create/<_id>
POST //_create/<_id>

删除文档

DELETE http://localhost:9200//_doc/<_id>

获取文档

GET http://localhost:9200//_doc/<_id>
HEAD /_doc/<_id>
GET /_source/<_id>
HEAD /_source/<_id>

查询相关API

GET http://localhost:9200//_search
GET /_search
POST //_search
POST /_search
//RequestBody可设置查询条件

更多可以参考:https://www.elastic.co/guide/en/elasticsearch/reference/current/rest-apis.html

6、倒排索引

Elasticsearch 使用一种称为倒排索引的结构,它适用于快速的全文搜索。一个倒排索引由文档中所有不重复词的列表构成,对于其中每个词,有一个包含它的文档列表。
例如,假设我们有两个文档,每个文档的 content 域包含如下内容:
Welcome to China
This is a guest from China
为了创建倒排索引,我们首先将每个文档的 content 域拆分成单独的 词(我们称它为 词条 或 tokens ),创建一个包含所有不重复词条的排序列表,然后列出每个词条出现在哪个文档。结果如下所示:
在这里插入图片描述
现在,如果我们想搜索 from China ,我们只需要查找包含每个词条的文档:
在这里插入图片描述

两个文档都匹配,但是第二个文档比第一个匹配度更高。如果我们使用仅计算匹配词条数量的简单相似性算法 ,那么,我们可以说,对于我们查询的相关性来讲,第二个文档比第一个文档更佳。
除此之外,还要单词规范化、分词等问题,具体可以参考 https://www.elastic.co/guide/cn/elasticsearch/guide/current/inverted-index.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值