zoukankan      html  css  js  c++  java
  • ES入门宝典(详细截图版)

    file

    本文使用版本基于elasticsearch-6.4.0

    1、什么是ES?

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

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

    file

    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:UsersJN>d:

    D:>cd

    D:elasticsearch-6.4.0>cd bin

    D:elasticsearch-6.4.0in>elasticsearch.bat

    kibana也是

    C:UsersJN>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_64in>kibana.bat

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

    file

    localhost:5601访问kibana

    file

    linux下部署ES

    下载linux版本ES

     curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.0.tar.gz
    

    新建 切换用户

    useradd es
    passwd es
    su es
    

    解压

    tar -zxvf elasticsearch-6.4.0.tar.gz
    

    修改配置

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

    启动

    ./bin/elasticsearch
    

    9300:集群节点间通讯接口

    9200:客户端访问接口

    访问9200可以看见数据返回

    curl localhost:9200
    

    file

    4、简单Restful Api操作

    网页访问kibana

    localhost:5601 选择 Dev Tools

    file

    基本操作

    集群健康 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数据“

    }

    例子:

    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

    修改

    (替换方式) 替换必须带所有信息
     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分数越大,排位越靠前

    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请求体查询

    GET /blog01/article/_search
    {
      "query": {
        "match_all": {}
      }
    }
    

    query filter

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

    GET /blog01/article/_search
    {
      "query" : {
    		"bool" : {
              	"must" : {
                   "match" :{
                      "desc" : "kibana"
                   }
              	}	
    		}
    	}
    }
    

    全文检索 full text search

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

    GET /blog01/article/_search
    {
      "query" : {
                   "match" :{
                      "desc" : "kibana test"
                   }
    	}
    }
    

    短语搜索 phrase search

    两个词必须都包含

    GET /blog01/article/_search
    {
      "query" : {
                   "match_phrase" :{
                      "desc" : "kibana test"
                   }
    	}
    }
    

    高亮结果 highlight search

    GET /blog01/article/_search
    {
      "query" : {
                   "match" :{
                      "desc" : "kibana"
                   }
                   
    	},
    	"highlight":{
                     "fields":{
                       "desc" :{}
                     }
        } 
    }
    

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

    file

  • 相关阅读:
    BZOJ 3033 太鼓达人(DFS+欧拉回路)
    HDU 5121 Just A Mistake
    HDU 5120 Intersection
    HDU 5119 Happy Matt Friends
    HDU 5117 Fluorescent
    BZOJ 1088: [SCOI2005]扫雷Mine
    Codeforces 994 C
    BZOJ 2242: [SDOI2011]计算器
    HDU 4609 3-idiots
    算法笔记--FFT && NTT
  • 原文地址:https://www.cnblogs.com/mtxcat/p/14115241.html
Copyright © 2011-2022 走看看