前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ES入门宝典(详细截图版)

ES入门宝典(详细截图版)

作者头像
用户6070864
发布2020-05-18 17:02:58
5360
发布2020-05-18 17:02:58
举报
文章被收录于专栏:实时流式计算实时流式计算

本文使用版本基于elasticsearch-6.4.0

1、什么是ES?

官网: https://www.elastic.co/products/elasticsearch

中文官网:https://www.elastic.co/cn/products/elasticsearch

ES是一个全文检索引擎,提到全文检索,就要说一下以下几个概念:

搜索:寻找想要的信息,根据关键字找到想要的信息。

倒排索引:反向索引,提取关键字建立索引,不需要全部遍历,提高效率,减少扫描次数。

lucene,就是一个jar包 里面有倒排索引和一些算法 可以基于lucene api进行全文检索的开发,api复杂。

了解全文检索,可以关注这篇文章什么是全文检索

ES也就是Elasticsearch又是什么呢?

封装lucene 提供企业级服务;

基于Apache lucene构建得开源搜索引擎;

java编写 简单易用得RESTFul API;

横向扩展 支持PB级的结构化或非结构化数据处理;

ES的功能:

1)分布式的搜索引擎和数据分析引擎。

2)全文检索,结构化检索,数据分析。

3)对海量数据进行近实时的处理。

应用场景:

海量数据的分析引擎;站内搜索引擎;数据仓库。

国外:维基百科,Stack Overflow,GitHub

国内:站内搜索(电商,招聘,门户,等等),IT系统搜索(OA,CRM,ERP,等等),数据分析(ES热门的一个使用场景)

2、主要概念

索引index

逻辑存储 相当于关系型数据库的表

每个索引有一或多个分片(shard) 每个分片有多个副本(replica)

分片shard

单台机器无法存储大量数据,es可以将一个索引中的数据切分为多个shard,分布在多台服务器上存储。有了shard就可以横向扩展,存储更多数据,让搜索和分析等操作分布到多台服务器上去执行,提升吞吐量和性能。每个shard都是一个lucene index。

副本replica

任何一个服务器随时可能故障或宕机,此时shard可能就会丢失,因此可以为每个shard创建多个replica副本。replica可以在shard故障时提供备用服务,保证数据不丢失,多个replica还可以提升搜索操作的吞吐量和性能。

文档document

es中的最小数据单元,一个document可以是一条客户数据,一条商品分类数据,一条订单数据,通常用JSON数据结构表示,每个index下的type中,都可以去存储多个document。一个document里面有多个field,每个field就是一个数据字段。

面向文档存储

(1)应用系统的数据结构都是面向对象的,复杂的 (2)对象数据存储到数据库中,只能拆解开来,变为扁平的多张表,每次查询的时候还得还原回对象格式,相当麻烦 (3)ES是面向文档的,文档中存储的数据结构,与面向对象的数据结构是一样的,基于这种文档数据结构,es可以提供复杂的索引,全文检索,分析聚合等功能 (4)es的document用json数据格式来表达

映射mapping

文档中的每个字段根据不同类型做相应分析。

ES核心概念 vs. 数据库核心概念

索引(indices)-------------Table 数据表

文档(Document)--------Row 行

字段(Field)-------Columns 列

3、安装部署

安装JDK,至少1.8.0_73以上版本

win下部署ES

下载win版本

解压 放在d盘

同步命令行启动

C:\Users\JN>d:

D:>cd

D:\elasticsearch-6.4.0>cd bin

D:\elasticsearch-6.4.0\bin>elasticsearch.bat

kibana也是

C:\Users\JN>d:

D:>cd kibana-6.4.0-windows-x86_64

D:\kibana-6.4.0-windows-x86_64>cd bin

D:\kibana-6.4.0-windows-x86_64\bin>kibana.bat

部署成功:可以通过localhost:9200访问es

localhost:5601访问kibana

linux下部署ES

下载linux版本ES

代码语言:javascript
复制
 curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.0.tar.gz

新建 切换用户

代码语言:javascript
复制
useradd es
passwd es
su es

解压

代码语言:javascript
复制
tar -zxvf elasticsearch-6.4.0.tar.gz

修改配置

代码语言:javascript
复制
cd conf
vim elasticsearch.yml  es配置:集群  日志位置 数据位置  访问限制等等
vim jvm.options   jvm配置

启动

代码语言:javascript
复制
./bin/elasticsearch

9300:集群节点间通讯接口

9200:客户端访问接口

访问9200可以看见数据返回

代码语言:javascript
复制
curl localhost:9200

4、简单Restful Api操作

网页访问kibana

localhost:5601 选择 Dev Tools

基本操作

集群健康 GET /_cat/health

1556162587 11:23:07 elasticsearch green 1 1 1 1 0 0 0 0 - 100.0%

查看索引 GET /_cat/indices?v

green open .kibana NHt9dbSkRWaom_Df6cyi6w 1 0 1 0 4kb 4kb

创建索引 PUT /test_index?pretty

删除索引 DELETE /test_index?pretty

CRUD操作

PUT /index/type/id

{

”json数据“

}

例子:

代码语言:javascript
复制
PUT /blog01/article/1
{
    "id": "1",
    "title": "elasticsearch"
    "desc":"elasticsearch"
}

PUT /blog01/article/2
{
    "id": "2,
    "title": "kibana "
    "desc":"kibana "
}

es会自动建立index和type,不需要提前创建,而且es会默认对document的每个field都建立倒排索引,让其可以被搜索。

查询 GET /blog01/article/1

修改

代码语言:javascript
复制
(替换方式) 替换必须带所有信息
 PUT /blog01/article/1
    {
        "id": "1",
        "title": "elasticsearch"
        "desc":"elasticsearch_new"
    }
(更新方式)
POST /blog01/article/2/_update
{
    "doc": {
     "desc":"elasticsearch_new"
   }
}

删除 DELETE /blog01/article/1

简单搜索

query string search

search参数http附带

took:整个搜索请求花费了多少毫秒

timed_out:是否超时

_shards:切片

hits.total:本次搜索,返回了几条结果 hits.max_score:本次搜索的所有结果中,最大的相关度分数是多少,每一条document对于search的相关度,越相关,_score分数越大,排位越靠前

代码语言:javascript
复制
GET /blog01/article/_search?q=desc:kibana
{
  "took": 4,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": 1,
    "max_score": 0.2876821,
    "hits": [
      {
        "_index": "blog01",
        "_type": "article",
        "_id": "2",
        "_score": 0.2876821,
        "_source": {
          "id": "2",
          "title": "kibana ",
          "desc": "kibana "
        }
      }
    ]
  }
}

query DSL

Domain Specified Language

带json请求体查询

代码语言:javascript
复制
GET /blog01/article/_search
{
  "query": {
    "match_all": {}
  }
}

query filter

bool可以封装多个条件 “must”必须匹配 “filter”过滤

代码语言:javascript
复制
GET /blog01/article/_search
{
  "query" : {
        "bool" : {
              "must" : {
               "match" :{
                  "desc" : "kibana"
               }
              }
        }
    }
}

全文检索 full text search

会根据两个词 去倒排索引查找 匹配上任意一个就会返回 匹配度最高的文档排在前面

代码语言:javascript
复制
GET /blog01/article/_search
{
  "query" : {
               "match" :{
                  "desc" : "kibana test"
               }
    }
}

短语搜索 phrase search

两个词必须都包含

代码语言:javascript
复制
GET /blog01/article/_search
{
  "query" : {
               "match_phrase" :{
                  "desc" : "kibana test"
               }
    }
}

高亮结果 highlight search

代码语言:javascript
复制
GET /blog01/article/_search
{
  "query" : {
               "match" :{
                  "desc" : "kibana"
               }

    },
    "highlight":{
                 "fields":{
                   "desc" :{}
                 }
    }
}

更多ES,Flink,Kafka等实时计算相关博文,欢迎关注实时流式计算:

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 实时流式计算 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、什么是ES?
  • 2、主要概念
    • 索引index
      • 分片shard
        • 副本replica
          • 文档document
            • 映射mapping
              • ES核心概念 vs. 数据库核心概念
              • 3、安装部署
                • win下部署ES
                  • linux下部署ES
                    • 4、简单Restful Api操作
                      • 基本操作
                      • CRUD操作
                      • 简单搜索
                  相关产品与服务
                  Elasticsearch Service
                  腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档