elasticsearch笔记

elasticsearch笔记

由于项目上要用到elasticsearch,发现很久都没有亲手部署过elasticsearch了,部署之后发现一些问题,所以写此博客记录。顺便回顾es的一些知识点。

elasticearch概述

elaticsearch,简称为es, es是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别(大数据时代)的数据。es也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单RESTfulAPI来隐藏Lucene的复杂性,从而让全文搜索变得简单。

简单的说elasticsearch是一个基于Lucene的近实时分布式搜索和分析引擎。

什么是Lucene

Lucene是用JAVA写成的,目标是为各种中小型应用软件加入全文检索功能的搜索引擎库(jar包)

Lucene的缺点

1、不支持分布式,多台服务器要通过代码合并搜索结果,不友好,开发复杂。
2、 无法实现HA,服务器挂了数据就丢了。

elasticearch和Solr的区别

说到es就不得不提到solr ,因为solr也是一个基于Lucene
的全文搜索服务器。具体的介绍就不多说,想要详细了解的可自行搜索,这里只做比较。
1、solr 查询快,但更新索引时慢(即插入删除慢),用于电商等查询多的应用;
2、es建立索引快(即查询慢),即实时性查询快,用于facebook新浪等搜索;
3、es安装简洁(开箱即用),solr相对复杂;
4、es自身带有分布式协调管理功能,solr是基于zookeeper进行分布式管理;
5、es仅仅支持json格式数据,而solr支持多种数据格式:json、XML、CSV;

elasticsearch应用范围

1、搜索类网站,如维基百科、百度百科
2、电商网站检索商品
3、数据分析和挖掘领域,比如用户群体分析、营收增长等
4、ELK技术(elasticsearch+logstash+kibana)

ES特点及优势

1、可以作为大型的分布式集群,处理PB级的数据,也可以单机运行。
2、开箱即用非常简单,隐藏了Lucene的复杂性。
3、弥补数据库的不足(事务,联机型事物操作),可以进行全文检索,同义词处理,相关度排名,复杂数据分析等。
4、API更简单,更高级。
5、支持多种语言。
6、支持PB级数据。
7、完成搜索和分析功能。

elasticsearch核心概念

Index(索引)
类似于我们Mysql里面的一个数据库 ,好比就是一个索引库。
Type(类型-表)
ES6以后一个index只能有一个type,为了提高查询效率。
Document(文档-行)
文档就是最终的数据了,可以认为一个文档就是一条记录。
是ES里面最小的数据单元,就好比表里面的一条数据。
Field(字段-列)
好比关系型数据库中列的概念,一个document有一个或者多个field组成。
mapping(映射-约束)
数据如何存放到索引对象上,需要有一个映射配置,包括:数据类型、是否存储、是否分词等。
Shard(分片)
当有大量的文档时,由于内存的限制、磁盘处理能力不足、无法足够快的响应客户端的请求等,一个节点可能不够。这种情况下,数据可以分为较小的分片。每个分片放到不同的服务器上。
当你查询的索引分布在多个分片上时,ES会把查询发送给每个相关的分片,并将结果组合在一起,而应用程序并不知道分片的存在。即:这个过程对用户来说是透明的。
Replia(副本)
为提高查询吞吐量或实现高可用性,可以使用分片副本。
副本是一个分片的精确复制,每个分片可以有零个或多个副本。ES中可以有许多相同的分片,其中之一被选择更改索引操作,这种特殊的分片称为主分片。
当主分片丢失时,如:该分片所在的数据不可用时,集群将副本提升为新的主分片。

全文检索

将一篇文章切分为一个个的词或字,分别创建索引,分别之名在这个词中出现的次数和位置,当用户查找时,即通过事先建立的索引进行查找。

倒排索引

就是根据内容查ID,然后再通过ID查询出需要的内容。

elasticsearch安装部署

jdk版本:jdk11
es版本:7.6.1
elasticsearch下载地址:https://www.elastic.co/cn/downloads/elasticsearch
在这里插入图片描述

注意:es版本和jdk版本有对应关系,并且在java开发中,elasticSearch 的版本和 Java 的核心jar包的版本也要对应。下面是es和jdk的版本对应关系图。
在这里插入图片描述

1、windows版本安装

1、es是开箱即用,所以解压就可以使用。
在这里插入图片描述

2、在安装目录的bin目录下双击elasticsearch.bat启动es:
在这里插入图片描述

如图所示 9200 是es基于http的外部通讯端口,started表示启动成功。
在这里插入图片描述

打开浏览器进行访问测试:
在这里插入图片描述

3、安装可视化界面插件elasticsearch-head:

  • 首先需要安装node环境

node下载地址:http://nodejs.cn/download/
下载Windows版msi,傻瓜式安装,一直点next即可:
在这里插入图片描述
检验:cmd进入DOS,输入 node -v 命令,返回的是node.js的版本,说明安装成功。
在这里插入图片描述

  • 安装grunt
    grunt是一个很方便的构建工具,可以进行打包压缩、测试、执行等等的工作,es-head就是通过grunt启动的。
    输入命令安装:
    npm install -g grunt-cli
    查看版本号 grunt -version
    在这里插入图片描述
  • 安装elasticsearch-head:
    下载地址:https://github.com/mobz/elasticsearch-head/
    解压,进入head文件夹下,执行命令:npm install

如果安装速度慢,设置成淘宝的镜像重新安装 npm config set registry https://registry.npm.taobao.org

  • 启动es-head :输入npm run start或grunt server命令
    在这里插入图片描述

  • 安装完成之后,修改es路径下的elasticsearch.yml文件

增加新的参数
http.cors.enabled: true http.cors.allow-origin: "*"

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

  • 启动 / 重启 elasticsearch

在这里插入图片描述

2、linux版本安装

  • 官网下载linux对应的安装包,同上。

  • 将安装包上传到虚拟机,解压。
    tar -xvf elasticsearch-7.6.1-linux-x86_64.tar.gz

  • 将解压后的文件放到/opt/software/下
    mv elasticsearch-7.6.1 /opt/software/

  • 修改配置文件elasticearch.yml
    vim /opt/software/elasticsearch-7.6.1/config/elasticearch.yml
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 修改jvm.options
    vim /opt/software/elasticsearch-7.6.1/config/jvm.options

在这里插入图片描述

  • 修改limits.conf
    vim /etc/security/limits.conf
    在这里插入图片描述
  • 在 /etc/sysctl.conf 中增加
    vm.max_map_count=262145
    在这里插入图片描述
  • 后台运行elasticsearch
    ./elasticsearch -d
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值