黑马elasticsearch 从认识到基本操作

1、简介

什么是elasticsearch?
        一个开源的分布式搜索引擎,云可以用来实现搜索、日志统计、分析、系统监控等功能
什么是elastic stack(ELK)?
        是以elasticsearch为核心的技术栈,包括beats、Logstash,kibana、elasticsearch
什么是Lucene?
        是Apache的开源搜索引擎类库,提供了搜索引擎的核心API

什么是文档和词条?
        每一条数据就是一个文档
        对文档中的内容分词,得到的词语就是词条
什么是正向索引?
        基于文档id创建索引。查询词条时必须先找到文档,而后判断是否包含词条
什么是倒排索引?
        对文档内容分词,对词条创建索引,并记录词条所在文档的信息。查询时先根据词条查询到文档id,而后获取到文档

ES组成:

        文档:一条数据就是一个文档,es中是Json格式
        字段:Json文档中的字段
        索引:同类型文档的集合
        映射:索引中文档的约束,比如字段名称、类型

elasticsearch与数据库的关系:
        数据库负责事务类型操作
        elasticsearch负责海量数据的搜索、分析、计算

2、安装ES、Kibana,分词器

        Kibana是一个开源的数据可视化工具,通常与Elasticsearch一起使用。

        1、因为我们还需要部署kibana容器,因此需要让es和kibana容器互联。这里先创建一个网络:docker network create es-net

        2、从dockerhub上pull对应的kibana和ES的镜像,或者直接在网上找资源自己load

        3、部署ES:

docker run -d \

  --name es \

    -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \

    -e "discovery.type=single-node" \

    -v es-data:/usr/share/elasticsearch/data \

    -v es-plugins:/usr/share/elasticsearch/plugins \

    --privileged \

    --network es-net \

    -p 9200:9200 \

    -p 9300:9300 \

elasticsearch:7.12.1

自上而下含义分别为:

设置Elasticsearch的Java虚拟机选项,指定最小堆内存为512MB,最大堆内存为512MB

设置Elasticsearch的发现类型为单节点,后续集群可再变化

将名为 "es-data" 的数据卷挂载到Elasticsearch容器的数据目录

将名为 "es-plugins" 的数据卷挂载到Elasticsearch容器的插件目录

启用特权模式,容器将拥有对主机系统的更多权限

容器连接到名为 "es-net" 的网络

将主机端口9200映射到容器的9200端口,用于访问Elasticsearch HTTP API

将主机端口9300映射到容器的9300端口,用于Elasticsearch集群通信

运行基于Elasticsearch 7.12.1镜像的容器

部署成功后访问9200端口,将有以下返回:

        4、部署kibana:

docker run -d \

--name kibana \

-e ELASTICSEARCH_HOSTS=http://es:9200 \

--network=es-net \

-p 5601:5601  \

kibana:7.12.1

-e ELASTICSEARCH_HOSTS=http://es:9200 \因为其和es在同一个网络,故可以用容器名互联,其他便大同小异

ps:注意kibana要和es版本对应,kabana启动会较慢

成功创建并运行容器后,访问5601接口可见:

        5、安装IK分词器

        由于es官方分词器对中文分词支持不太好,故需要再找插件用于对中文分词。

        在github上下载对应版本的IK分词器后,通过docker volume inspect es(容器名)找到es对应的插件文件夹,把分词器解压缩后的文件下放进去,restart服务即可

        

        其中kibana的devtool用于方便发送DSL请求给es

        6、分词器字典拓展

        可以在es挂载的IK插件中找到config文件夹以修改字典配置,增加词或删除词

        其中IKAnalyzer.cfg.xml是字典配置文件

        其中ext_dic是用于新增词文件的文件名,没有该文件可以自行创建

        stopword.dic一般自己会有,直接在其上面新增不想进行分词的词语即可

分词器的作用是什么?
        创建倒排索引时对文档分词
        用户搜索时,对输入的内容分词
IK分词器有几种模式?
        ik_smart:智能切分,粗粒度
        ik max word:最细切分,细粒度
IK分词器如何拓展词条?如何停用词条?
        利用config目录的IkAnalyzer.cfg.xml文件添加拓展词典和停用词典

        在词典中添加拓展词条或者停用词条

3、索引库操作

1、mapping常见属性有哪些?
        type:数据类型
        index:是否索引
        analyzer:分词器
        properties:子字段
type常见的有哪些?
        字符串:text、keyword
        数字:long、integer、short、byte、double、float
        布尔:boolean
        日期:date
        对象:object

notices:

text和analyzer搭配使用,需要分词的就用text

object用来装多个子字段,子字段需要分别声明数据类型

2、创建索引库示例:

#创建索引库
PUT /heima
{
  "mappings": {
    "properties": {
      "info":{
        "type": "text",
        "analyzer": "ik_smart"
      },
      "email":{
        "type": "keyword",
        "index": false
      },
      "name":{
        "type": "object",
        "properties": {
          "firstName":{
            "type":"keyword"
          },
          "lastName":{
            "type":"keyword"
          }
        }
      }
    }
  }
}

3、索引库的rud

        ps:为了保证数据的完整性和一致性索引库不允许修改,但是可以新增

rud示例:

#查询
GET /heima

#删除
DELETE /heima

#新增
PUT /heima/_mapping
{
  "properties":{
    "age":{
      "type":"integer"
    }
  }
}

索引库操作有哪些?
        创建索引库:PUT/索引库名
        查询索引库:GET/索引库名
        删除索引库:DELETE /索引库名
        添加字段:PUT/索引库名/mapping

4、文档操作

文档操作有哪些?
        创建文档:POST/索引库名/doc/文档id {json文档}
        查询文档:GET/索引库名/doc/文档id
        删除文档:DELETE/索引库名/doc/文档id
        修改文档:
                全量修改:PUT/索引库名/doc/文档id{json文档}

                增量修改:POST/索引库名/update/文档id{"doc":{字段}

示例:

#新增文档
POST /heima/_doc/1
{
  "info":"ss天下第一",
  "email":"shenshao66@gmail.com",
  "name":{
    "firstName":"s",
    "lastName":"s"
  }
}

#查询文档
GET /heima/_doc/1

#删除文档
DELETE /heima/_doc/1

#全量修改文档
PUT /heima/_doc/1
{
  "info":"ss天下第一",
  "email":"shenshao66@gmail.com",
  "name":{
    "firstName":"s",
    "lastName":"s"
  }
}


#局部修改文档
POST /heima/_update/1
{
  "doc": {
    "name":{
      "firstName":"d"
    }
  }

  • 24
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值