简介

Lucene 是什么?

Lucene 可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。Lucene 只是一个库,想要发挥出强大作用,需要使用Java将其集成到应用中。Lucene非常复杂,需要深入了解检索相关知识理解它是如何工作的。

Elasticsearch 是什么?

Elasticsearch 是一个基于 Apache Lucene 的开源搜索引擎。

Elasticsearch 是使用Java编写并使用Lucene来建立索引并实现搜索功能。它的目的是通过简单连贯的RestFul API 让全文搜索变得简单来隐藏Lucene的复杂性。

Elasticsearch 不仅仅是Lucene和全文搜索引擎,它还提供:

  • 分布式的实时文件存储,每个字段都被索引并可被搜索
  • 实时分析的分布式搜索引擎
  • 可以拓展到上百台服务器(集群),处理PB级结构化或非结构化数据

Elasticsearch 中涉及到的重要概念

  1. 接近实时(NRT) Elasticsearch 是一个接近实时的搜索平台。

  2. 集群(cluster) Elasticsearch 支持集群部署,一个集群就是由一个或多个节点组织在一起,它们共同持有整个数据,并一起提供索引和搜索功能。 一个集群由一个唯一的名字标识,默认“elasticsearch”

  3. 节点(node) 一个节点是集群中的一个服务器,作为集群的一部分, 一一个节点也是由一个名字来标识,默认是一个随机的漫威漫画角色的名字。

    一个节点可以通过配置集群名称的方式来加入一个指定的集群。默认情况下,每个节点都会被安排加入“elasticsearch”集群中。

  4. 索引(index) 一个索引就是一个拥有几分相似特征的文档的集合。 类似于关系型数据库(Mysql)中Database的概念。

    一个索引由一个名字来标识(必须全小写字母),并且当我们要对这个索引中的文档进行索引、搜索、更新和删除的时候,都要使用到这个名字

  5. 类型(type) 在一个索引中,可以定义一种或多种类型。一个类型是索引的一个逻辑上的分类/分区。通常会为具有一组共同字段的文档定义一个类型。类似于关系型数据库(Mysql)中的Table 的概念。

  6. 文档(document) 一个文档是一个可被索引的基础信息单元。文档以 JSON 格式来标识。 在一个index/type里,只要想,可以存储任意多的文档。文档必须被索引/赋予一个索引的type。 文档类似于关系型数据库中的一条记录

  7. 分片和复制(shard & replicas) 一个索引可以存储超出单个节点硬件限制的大量数据。比如,一个具有10亿文档的索引占据了1TB的磁盘空间,单个节点没这么大的空间;或者单个节点处理搜索请求,相应太慢。

    为了解决这个问题,Elasticsearch 提供了将索引划分成多份的能力,这些份叫做分片(shard)。 当创建一个索引的时候,可以指定想要分片的数量。每个分片本身也是一个功能完善并且独立的索引,这个索引可以被放置到集群中的任何节点上。

    分片之所以重要,主要有两方面原因:

    • 允许水平分割,拓展内容容量
    • 允许在分片之上进行分布式的、并行的操作,进而提高性能/吞吐量

    至于一个分片怎样分布,它的文档怎样聚合回搜索请求,完全由Elasticsearch管理。对于用户来说是透明的。

    副本指的是分片的副本,是shard的复制

    复制之所以重要,主要有两个原因:

    • 再shard/node失败的时候,它提供高可用性。正因为如此,复制的shard绝不会跟原始shard在同一个节点上
    • 拓展搜索量/吞吐量,因为搜索可以在所有的复制上并行运行

    总结:每个索引可以被分成多个分片。 一个索引也可以被复制0次或多次。 一旦复制了,每个索引就有了主分片和复制分片。 分片和复制的数量可以在创建索引的时候指定。在索引创建之后,可以在任何时候动态地改变复制数量,但不能改变分片的数量。

    小结

    • node 是一台服务器,表示集群中的节点
    • document 表示索引记录
    • 一个index中不建议定义多个type
    • 一个index可以有多个shard,每个shard可以有0个或多个副本
    • original shard(原始分片)的复制成为副本shard,简称 shard
    • 主分片和副本绝不会在同一个节点上
    • 分片的好处主要有两个:1.突破单台服务器的硬件限制;2.可以并行操作,从而提高性能和吞吐量(跟kafka类似)
    • 副本的好处主要在有两个:1.提供高可用; 2.并行提升性能和吞吐量
    • 一个索引包含一个或多个分片,索引记录(文档)数据存储在这些shard中,且一个文档只会存在于一个分片中
    • 每个shard都是一个独立的功能完善的“index”,意思是它可以独立处理索引/搜索请求

下载

下载

   # 创建目录$ mkdir -p /work/programs/elasticsearch$ cd /work/programs/elasticsearch# 下载$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.7.2.tar.gz

编辑配置

   $ vi config/elasticsearch.yml

修改配置如下:

network.host:0.0.0.0 :实现内网可访问。

启动

注意 :需要使用非Root账号启动。

   # 解压$ tar -zxvf elasticsearch-6.7.2.tar.gz$ cd elasticsearch-6.7.2# 启动。通过 -d 参数,表示后台运行。$ bin/elasticsearch -d

可以通过 logs/elasticsearch.log 查看启动日志。

注意: 如果使用云服务器,要开放端口,才能公网IP访问

测试:

访问: http://112.74.186.224:9200/

   {"name" : "rrpUhc6","cluster_name" : "elasticsearch","cluster_uuid" : "7yQXN3VDRSikmUOh-fhXJA","version" : {"number" : "6.7.2","build_flavor" : "default","build_type" : "tar","build_hash" : "56c6e48","build_date" : "2019-04-29T09:05:50.290371Z","build_snapshot" : false,"lucene_version" : "7.7.0","minimum_wire_compatibility_version" : "5.6.0","minimum_index_compatibility_version" : "5.0.0"},"tagline" : "You Know, for Search"}

安装ik分词器插件

以安装ik分词器为例

在 https://github.com/medcl/elasticsearch-analysis-ik/releases 中,提供了各个 elasticsearch-analysis-ik 插件版本。要注意,一定和 Elasticsearch 版本一致。

   #cd到elasticsearch目录下 下载$ wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.7.2/elasticsearch-analysis-ik-6.7.2.zip# 需要解压到 plugins/ik/ 目录下$ unzip elasticsearch-analysis-ik-6.5.0.zip -d plugins/ik/# 查找 ES 进程,并关闭它$ ps -ef | grep elastic$ kill 2382 # 假设我们找到的 ES 进程号为 2382 。# 启动 ES 进程$ bin/elasticsearch -d# 测试ik分词器# ik_max_word 模式$ curl -X POST \http://localhost:9200/_analyze \-H 'content-type: application/json' \-d '{"analyzer": "ik_max_word","text": "百事可乐"}'# ik_smart 模式$ curl -X POST \http://localhost:9200/_analyze \-H 'content-type: application/json' \-d '{"analyzer": "ik_smart","text": "百事可乐"}'

安装 elasticsearch-head

elasticsearch-head 需要node环境支持

安装node环境,这边假设已经安装完成

[lyk@iZwz99hfh1ddgd1z6q5u3mZ elasticsearch-6.7.2]$ node -v
v10.24.0
[lyk@iZwz99hfh1ddgd1z6q5u3mZ elasticsearch-6.7.2]$ npm -v
6.14.11

从github下载elasticsearch-head 并解压

我这边解压到了 head-master文件夹;

wget https://github.com/mobz/elasticsearch-head/archive/master.zip
unzip master.zip

npm 安装阿里镜像 提速

[root@iZwz99hfh1ddgd1z6q5u3mZ head-master]# npm install cnpm -g --registry=https://registry.npm.taobao.org

安装head 所需的包

[root@iZwz99hfh1ddgd1z6q5u3mZ head-master]# cnpm install

修改 Gruntfile.js文件

[root@iZwz99hfh1ddgd1z6q5u3mZ head-master]# vi Gruntfile.js 

启动head插件

[root@iZwz99hfh1ddgd1z6q5u3mZ head-master]# npm run start> elasticsearch-head@0.0.0 start /work/programs/elasticsearch/head-master
> grunt serverRunning "connect:server" (connect) task
Waiting forever...
Started connect web server on http://localhost:9100

访问 http://XXXX:9100/

修改 elasticsearch-head 默认连接地址

[root@iZwz99hfh1ddgd1z6q5u3mZ head-master]# cd _site/
[root@iZwz99hfh1ddgd1z6q5u3mZ _site]# vi app.js 

连接会有跨域问题,需要解决跨域

在 elasicsearch.yml文件末尾加跨域配置

#允许跨域
http.cors.enabled: true
http.cors.allow-origin: "*"

启动 head 服务

[lyk@iZwz99hfh1ddgd1z6q5u3mZ head-master]$ cd node_modules/grunt/bin/
[lyk@iZwz99hfh1ddgd1z6q5u3mZ bin]$ ./grunt server &
[1] 1331
[lyk@iZwz99hfh1ddgd1z6q5u3mZ bin]$ Running "connect:server" (connect) task
Waiting forever...
Started connect web server on http://localhost:9100

集群健康值描述

  • 绿色:最健康的状态,代表所有的分片包括备份都可用
  • 黄色:基本的分片可用,但是备份不可用(也可能是没有备份)
  • 红色:部分的分片可用
  • 灰色: 未连接到elasticsearch服务

    本文由博客一文多发平台 OpenWrite 发布!

Elasticsearch 01简单入门 以及 Head 插件安装相关推荐

  1. 定时任务-Quartz、Mycat简单入门、Linux下安装MySQL、Linux下安装MyCAT、Mycat的数据库分片、Mycat读写分离

    表现层:页面 后台管理系统.商城门户.搜索系统.订单系统.商品详情系统.购物车系统 中间件:dubbo 系统之间的通信,服务的统计,rpc协议远程过程调用 同步通信 服务层:实现具体的业务逻辑 商品服 ...

  2. Elasticsearch 6.3.1、Head插件 安装及配置

    安装Elasticsearch Elasticsearch下载地址:https://www.elastic.co/cn/downloads/elasticsearch 也可以直接使用wget下载到某目 ...

  3. Elasticsearch集群部署及Head插件安装

    首先准备三台Linux服务器,系统版本Centos7,具备Java环境,最好是JDK11以上.由于ES比较吃内存,所以每台服务器的配置要求为: CPU:2核 内存:2G 我的三个节点分别是Hadoop ...

  4. WEB之浏览器使用入门--chrome扩展插件安装及好用的扩展插件小集合

    chrome插件 chrome本身是浏览器,提供最基本的谷歌提供的浏览器相关的功能.但是仅仅有基本的chrome本体在很多时候使用还是会感到力不从心,对浏览器本身通过安装一些常用的扩展(extenti ...

  5. ElasticSearch入门 :Windows下安装ElasticSearch

    这是ElasticSearch 2.4 版本系列的第一篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 E ...

  6. ElasticSearch及插件安装

    序言:Lucene和Solr和Elasticsearch的区别 Lucene Lucene是apache下的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全 ...

  7. 分布式搜索引擎ElasticSearch+Kibana (Marvel插件安装详解)

    在安装插件的过程中,尤其是安装Marvel插件遇到了很多问题,要下载license.Marvel-agent,又要下载安装Kibana 版本需求 Java 7 or later Elasticsear ...

  8. 【ElasticSearch系列】ES插件安装

    上篇文章介绍了一下EleasticSearch以及安装,这篇文章继续,将介绍ES的插件安装. 其实最开始我也不知道要安装什么插件,其实也疑惑,为什么ES不将需要的插件集成到自身,这样就能避免很多问题. ...

  9. Elasticsearch拼音分词插件安装

    Elastic的Medcl提供了一种搜索Pinyin搜索的方法.拼音搜索在很多的应用场景中都有被用到.比如在百度搜索中,我们使用拼音就可以出现汉字: 对于我们中国人来说,拼音搜索也是非常直接的.那么在 ...

最新文章

  1. COS 访谈第 19 期:张志华教授
  2. 如何理解“异或(XOR)”运算在计算机科学中的重要性?(转自-阿里聚安全)...
  3. java开发和测试开发,附小技巧
  4. [C# 设计模式] Adapter - 适配器模式(两种)
  5. c++11中thread join和detach的区别
  6. linux命令clock,简单了解Linux系统中clock命令的使用方法
  7. testflight怎么做版本更新_如何使用TestFlight进行App构建版本测试
  8. visibility: hidden与display:none的区别
  9. 动态规划——最优买卖股票时机含冷冻期(Leetcode 309)
  10. 《JS高级程序设计》之三
  11. ceph12.0.1的源码编译安装
  12. Stm32串口通信基础实验
  13. 仿真软件有哪些测试,仿真怎么去仿?测试怎么去测?虽然是问答篇,干货也不少,不要错过了!...
  14. 服务器里那个文件是地图的爆率,dnf这才是固伤职业最喜欢的地图,气息爆率是巨龙的4倍!...
  15. 经典面试问题回答思路
  16. UVA1629 切蛋糕 Cake slicing 题解
  17. XSS进阶一 ——合天网安实验室学习笔记
  18. JAVA用OpenCV做AI图片处理
  19. python snmp_cmds库snmpwalk 中文正常显示方法
  20. B. A and B

热门文章

  1. 什么牌子蓝牙耳机好?游戏党双十一最强蓝牙耳机选购清单
  2. 想转行设计?先了解这些东西
  3. Android Coding 利器 之 掌握小技巧,助你Coding更上一层楼~
  4. js截取字符串的方法
  5. 打篮球戴什么耳机比较好、分享五款专门打篮球用的蓝牙耳机
  6. java equals equalsignorecase 性能_Java中equals()与equalsIgnoreCase()之间的区别
  7. java web and jsp_java web jsp
  8. 【Java面试高频-多线程】- 三个线程分别负责打印A,B和C,循环100次
  9. 多线程的好处是什么?
  10. 亿级PV请求的三种负载均衡技术(转)