ES的入门

1-Elasticsearch简介

ES官网点击
在这里插入图片描述
介绍:

  • Elasticsearch是一个基于Lucene的搜索服务器
  • 提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口
  • Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的

2-Elasticsearch特点

海量数据处理

  • 大型分布式集群(数百台规模服务器)
  • 处理PB级数据
  • 小公司也可以进行单机部署

开箱即用

  • 简单易用,操作非常简单
  • 快速部署生产环境

作为传统数据库的补充

  • 传统关系型数据库不擅长全文检索(MySQL自带的全文索引,与ES性能差距非常大)
  • 传统关系型数据库无法支持搜索排名、海量数据存储、分析等功能
  • Elasticsearch可以作为传统关系数据库的补充,提供RDBM无法提供的功能

ES和Solr对比

  • Solr 利用 Zookeeper 进行分布式管理,而 Elasticsearch 自身带有分布式协调管理功能

  • Solr 支持更多格式的数据,而 Elasticsearch 仅支持json文件格式

  • Solr 官方提供的功能更多,而 Elasticsearch 本身更注重于核心功能,高级功能多有第三方插件提供

  • Solr 在传统的搜索应用中表现好于 Elasticsearch,但在处理实时搜索应用时效率明显低于 Elasticsearch

ELK架构
在这里插入图片描述

3-Elasticsearch中的核心概念

在这里插入图片描述

3.1-ES角色:
  • 实时性:从索引一个文档直到文档能够被搜索到有一个轻微的延迟

  • 集群:通过联合索引和搜索功能的节点的集合,每一个集群有一个唯一的名称标识

  • 节点:一个节点可以通过配置特定的名称来加入特定的集群

  • index:一个索引就是还有某些共有特性的文档的集合,类似于MySQL的数据库

  • type在6.x只允许有1个type

  • document:一个文档是一个基本的搜索单元

  • mapping:字段采用什么类型,字段是否需要分词,字段是否需要索引,是否需要保存(原始数据)
    在这里插入图片描述
    参考:https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.html

  • setting:设置 用于对索引库的设置,比如索引库有多少分片,多少个副本。

  • shard:分片,一个索引库可以被分为多个分片,默认为5

  • replica副本,一个分片可以被分为多个副本,默认为2

  • 流程:

  • es中,存储数据的基本单位就是索引index,比如说es中存储了一些订单系统的销售数据,就因该在es中创建一个索引,order—index,所有的销售数据就会都写到这个索引里面去,一个索引就像数据库。而type就相当于每一张表,一个index里面可以有多个type,在高版本中只能设置1个type,而mapping就相当于表的结构定义,定义了什么字段类型等,你往index的一个type里添加一行数据就叫做一个document,每一个document有多个filed,每一个filed就代表这个document的一个字段的值。

3.2-图解

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.3 ES架构

在这里插入图片描述

  • Client

    • ES客户端,就是提交查询的地方
  • index 在一个集群中,可以定义任意多的索引。

    • 一个index包含很多document,一个index就代表了一类类似的或者相同的document
    • 如说建立一个product index,商品索引,里面可能就存放了所有的商品数据,所有的商品document。
    • 产品index+商品document
  • type在高版本中就是1个

    • {
        "product_id": "1",
        "product_name": "长虹电视机",
        "product_desc": "4k高清",
        "category_id": "3",
        "category_name": "电器",
        "service_period": "1年"
      }
      
  • mapping

    • 数据如何存放到索引对象上,需要有一个映射配置,包括:数据类型、是否存储、是否分词等。
      在这里插入图片描述
  • 分片:

    • 当创建一个索引的时候,可以指定你想要的分片的数量,实现分布式读写
    • 通过分片可以实现横向分布式扩展,并发查询等
  • 副本:

    • 一旦设置了副本,每个索引就有了主分片和副本分片,分片和副本的数量可以在索引创建的时候指定

4-ES练习Demo

  • VSCODE测试
    在这里插入图片描述
    在这里插入图片描述

  • 案例:
    数据集:
    在这里插入图片描述

4.1-创建索引

Elasticsearch中,我们可以使用RESTful API(http请求)来进行索引的各种操作。创建MySQL表的时候,我们使用DDL来描述表结构、字段、字段类型、约束等。在Elasticsearch中,我们使用Elasticsearch的DSL来定义——使用JSON来描述。例如:
在这里插入图片描述

// 1.	使用PUT发送PUT请求
// 2.	索引名为 /job_idx
// 3.	判断是使用text、还是keyword,主要就看是否需要分词

PUT /job_idx
{
    "mappings": {
        "properties" : {
            "area": { "type": "text", "store": true},
            "exp": { "type": "text", "store": true},
            "edu": { "type": "keyword", "store": true},
            "salary": { "type": "keyword", "store": true},
            "job_type": { "type": "keyword", "store": true},
            "cmp": { "type": "text", "store": true},
            "pv": { "type": "keyword", "store": true},
            "title": { "type": "text", "store": true},
            "jd": { "type": "text", "store": true}
        }
    }
}

在这里插入图片描述

4.2- ES中字段的类型

在这里插入图片描述
在这里插入图片描述

4.3-查看索引映射
GET /job_idx/_mapping

在这里插入图片描述

4.4-查看所有索引
GET _cat/indices

在这里插入图片描述

4.5-删除索引
delete /job_idx

--完整: 
PUT /job_idx
{
    "mappings": {
        "properties" : {
            "area": { "type": "text", "store": true, "analyzer": "ik_max_word"},
            "exp": { "type": "text", "store": true, "analyzer": "ik_max_word"},
            "edu": { "type": "keyword", "store": true},
            "salary": { "type": "keyword", "store": true},
            "job_type": { "type": "keyword", "store": true},
            "cmp": { "type": "text", "store": true, "analyzer": "ik_max_word"},
            "pv": { "type": "keyword", "store": true},
            "title": { "type": "text", "store": true, "analyzer": "ik_max_word"},
            "jd": { "type": "text", "store": true, "analyzer": "ik_max_word"}
        }
    }
}

GET /job_idx/_mapping

索引的增删改查完毕

4.6-添加数据
  • 在Elasticsearch中,每一个文档都有唯一的ID
    在这里插入图片描述
PUT /job_idx/_doc/29097
{
    "area": "深圳-南山区",
    "exp": "1年经验",
    "edu": "大专以上",
    "salary": "6-8千/月",
    "job_type": "实习",
    "cmp": "乐有家",
    "pv": "61.6万人浏览过  / 14人评价  / 113人正在关注",
    "title": "桃园 深大销售实习 岗前培训",
    "jd": "薪酬待遇】 本科薪酬7500起 大专薪酬6800起 以上无业绩要求,同时享有业绩核算比例55%~80% 人均月收入超1.3万 【岗位职责】 1.爱学习,有耐心: 通过公司系统化培训熟悉房地产基本业务及相关法律、金融知识,不功利服务客户,耐心为客户在房产交易中遇到的各类问题; 2.会聆听,会提问: 详细了解客户的核心诉求,精准匹配合适的产品信息,具备和用户良好的沟通能力,有团队协作意识和服务意识; 3.爱琢磨,善思考: 热衷于用户心理研究,善于从用户数据中提炼用户需求,利用个性化、精细化运营手段,提升用户体验。 【岗位要求】 1.18-26周岁,自考大专以上学历; 2.具有良好的亲和力、理解能力、逻辑协调和沟通能力; 3.积极乐观开朗,为人诚实守信,工作积极主动,注重团队合作; 4.愿意服务于高端客户,并且通过与高端客户面对面沟通有意愿提升自己的综合能力; 5.愿意参加公益活动,具有爱心和感恩之心。 【培养路径】 1.上千堂课程;房产知识、营销知识、交易知识、法律法规、客户维护、目标管理、谈判技巧、心理学、经济学; 2.成长陪伴:一对一的师徒辅导 3.线上自主学习平台:乐有家学院,专业团队制作,每周大咖分享 4.储备及管理课堂: 干部训练营、月度/季度管理培训会 【晋升发展】 营销【精英】发展规划:A1置业顾问-A6资深置业专家 营销【管理】发展规划:(入职次月后就可竞聘) 置业顾问-置业经理-店长-营销副总经理-营销副总裁-营销总裁 内部【竞聘】公司职能岗位:如市场、渠道拓展中心、法务部、按揭经理等都是内部竞聘 【联系人】 黄媚主任15017903212(微信同号)"
}

在这里插入图片描述
在这里插入图片描述

4.7-更新数据
POST /job_idx/_update/29097
{
    "doc": {
        "salary": "15-20千/月"
    }
}

在这里插入图片描述

4.8-删除数据
DELETE /job_idx/_doc/29097

在这里插入图片描述

4.9- 查看索引状态
GET _cat/indices?index=job_idx


#用户提交一个文档ID,Elasticsearch将ID对应的文档直接返回给用户。
GET /job_idx/_search
{
    "query": {
        "ids": {
            "values": ["46313"]
        }
    }
}

# 搜索职位中带有「销售」关键字的职位
GET  /job_idx/_search 
{
    "query": {
        "match": {
            "jd": "销售"
        }
    }
}
# 多个字段的查询
GET  /job_idx/_search
{
    "query": {
        "multi_match": {
            "query": "销售",
            "fields": ["title", "jd"]
        }
    }
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值