快速掌握分布式搜索引擎ElasticSearch(一)
前言
由于最近在项目中接触使用到了ElasticSearch,从本篇博客开始将给大家分享这款风靡全球的产品。将涉及到ElasticSearch的安装、基础概念、基本用法、高级查询、中文分词器、与SpringBoot集成进行接口开发等相关知识。
ElasticSearch简述
如果大家接触过大数据的话,相信大家或多或少的听说过ELK。ELK是目前非常主流的用于网站监控,流量监控,日志监控,集中日志管理的一套解决方案。而ElasticSearch如同ELK的心脏一般,起到一个非常核心的作用。简单来说,Logstash通过把日志收集到ElasticSearch中,进行储存,kibana负责可视化的展现结果。
ELK
说白了,ElasticSearch就是一款大数据搜索引擎,那么在市面上还有哪些类似的产品呢?在Java开源界的话,主要就是Lucene、Solr和ElasticSearch了。
Lucene,Java领域的搜索引擎鼻祖,是一个比较底层的东西,需要深厚的搜索理论基础才可以掌握,比较复杂(它本身不是一个完整的解决方案,需要额外的开发工作)。因此,为了方便使用,屏蔽复杂性,Solr和ElasticSearch在lucene的基础上进行了二次开发。
Solr相比ElasticSearch而言拥有更加成熟的社区,比较稳定,但是随着数据量越来越大,对实时性要求越来越高,Solr的搜索效率在下降,而ElasticSearch却没有明显的变化。因此ElasticSearch非常适合实时搜索的应用。(比如大名鼎鼎的Github的站内实时搜索就在应用ES)
另外,由于ElasticSearch提供了简单易用的Restful API,轻松的横向扩展机制(说白了,可以通过加机器来扩展容量),能支持PB级别的结构化或非结构化数据处理,具有强大的分布式储存能力。
ElasticSearch的安装
安装比较简单,下载地址是:
https://www.elastic.co/cn/downloads/elasticsearch
下载后直接解压,运行即可。
运行es
默认启动端口9200
查看es启动状态
注意上面的方式是单实例的安装,那么分布式安装呢?
其实,对于分布式安装,无非注意下面几个配置要点:
指明谁是master,谁是slave,集群的名字,节点启动的端口(特别是在同一台机器上模拟分布式)。
几个重要的基础概念
索引,含有相同属性的文档集合。
类型,索引可以定义一个或者多个类型,文档必须属于一个类型。
文档,文档是可以被索引的基本数据单位。
看起来,比较绕,我们用类比的思路来理解:
类比理解
索引相当于database,类型相当于table,文档相当于一条记录,文档Document是es里面最小的储存单位。需要注意的是索引在es中的名称必须是英文字母小写且不包含中划线。和索引相关的有2个高级概念,一个是分片,一个是备份。
分片:每个索引都有多个分片,每个分片是一个lucene索引。
备份:拷贝一个分片就完成了分片的备份。
假设索引的数据很大,就会造成硬盘的压力很大,同时搜索速度也会出现瓶颈。那么可以将索引分成多个分片,从而分摊压力。分片的同时,还可以允许用户进行水平扩展和拆分,进行分布式的储存,从而提高搜索的效率。
当一个主分片出现问题时,备份的分片可以代替工作,从而提高了es的可用性。
es在默认创建索引时,会创建5个分片,一个备份。
假设我们的es是一个master,2个slave,创建索引时,走的默认配置(5个分片,1个备份),那么图示如下:
分片和备份
图中标绿颜色的是主分片,其他是备份的分片。
创建ES索引、类型
本文前面提到es提供了简单易用的Restful API来操作索引/类型/文档,下面介绍下基本格式:
API基本格式 http://ip:port/索引/类型/文档id
http常用方法 get/put/post/delete
下面,我们演示一下利用postman来创建一个索引和类型:
创建索引和类型
查询索引、类型信息
好了,本篇博客就介绍到这里,下一篇博客再来给大家介绍文档的增删改查操作等。
快速掌握分布式搜索引擎ElasticSearch(一)的更多相关文章
- 分布式搜索引擎Elasticsearch在CentOS7中的安装
1. 概述 随着企业业务量的不断增大,业务数据随之增加,传统的基于关系型数据库的搜索已经不能满足需要. 在关系型数据库中搜索,只能支持简单的关键字搜索,做不到分词和统计的功能,而且当单表数据量到达上百 ...
- ElasticSearch logo 分布式搜索引擎 ElasticSearch
原文来自:http://www.oschina.net/p/elasticsearch Elastic Search 是一个基于Lucene构建的开源,分布式,RESTful搜索引擎.设计用于云计算中 ...
- 分布式搜索引擎Elasticsearch的简单使用
官方网址:https://www.elastic.co/products/elasticsearch/ 一.特性 1.支持中文分词 2.支持多种数据源的全文检索引擎 3.分布式 4.基于lucene的 ...
- 分布式搜索引擎Elasticsearch的架构分析
一.写在前面 ES(Elasticsearch下文统一称为ES)越来越多的企业在业务场景是使用ES存储自己的非结构化数据,例如电商业务实现商品站内搜索,数据指标分析,日志分析等,ES作为传统关系型数据 ...
- 分布式搜索引擎ElasticSearch+Kibana (Marvel插件安装详解)
在安装插件的过程中,尤其是安装Marvel插件遇到了很多问题,要下载license.Marvel-agent,又要下载安装Kibana 版本需求 Java 7 or later Elasticsear ...
- 分布式搜索引擎Elasticsearch性能优化与配置
1.内存优化 在bin/elasticsearch.in.sh中进行配置 修改配置项为尽量大的内存: ES_MIN_MEM=8g ES_MAX_MEM=8g 两者最好改成一样的,否则容易引发长时间GC ...
- 分布式搜索引擎Elasticsearch的查询与过滤
一.写入 先来一个简单的官方例子,插入的参数为-XPUT,插入一条记录. curl -XPUT 'http://localhost:9200/test/users/1' -d '{ "use ...
- 分布式搜索引擎Elasticsearch PHP类封装 使用原生api
//官方的 php api写的鸡肋了,下面这个类可以使用 es api 操作. <?php class ElasticSearch { public $index; function __co ...
- 002_分布式搜索引擎Elasticsearch的查询与过滤
一.写入 先来一个简单的官方例子,插入的参数为-XPUT,插入一条记录. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 curl -XPUT 'http:/ ...
随机推荐
- apply(), applymap(), map()
Pandas 中map, applymap and apply的区别 https://blog.csdn.net/u010814042/article/details/76401133/ Panda ...
- CentOS 7 配置OpenCL环境(安装NVIDIA cuda sdk、Cmake、Eclipse CDT)
序 最近需要在Linux下进行一个OpenCL开发的项目,现将开发环境的配置过程记录如下,方便查阅. 完整的环境配置需要以下几个部分: 安装一个OpenCL实现,基于硬件,选择NVIDIA CUDA ...
- 通过Proxool配置访问数据库的要点
proxool 配置的时候有Proxool.properties 或者 Proxool.xml 两种方式初始化. 我的配置环境是 myEclipse10+tomcat6.0 + mysql5.0 . ...
- JAVA中变量的类型及命名规范
1. 计算机是一种极度精确的机器;2. 要将信息存储在计算机当中,就必须指明信息存储的位置和所需的内存空间;3. 在JAVA编程语言当中,使用声明语句来完成上述的任务; 4. 变量的类型: 5. 变量 ...
- ROM,PROM,EPROM,EEPROM及FLASH存储器的区别
在微机的发展初期,BIOS都存放在ROM(Read Only Memory,只读存储器)中.ROM内部的资料是在ROM的制造工序中,在工厂里用特殊的方法被烧录进去的,其中的内容只能读不能改,一旦烧录进 ...
- bzoj3172 luogu3966 [TJOI2013]单词
蒟蒻也能写出来的AC代码!这题是AC自动机模板题.插入单词时用一个没出现过的字符隔开就行了. 一些细节请看注释 #include <iostream> #include <cstri ...
- Angularjs中的事件广播 —全面解析$broadcast,$emit,$on
Angularjs中不同作用域之间可以通过组合使用$broadcast,$emit,$on的事件广播机制来进行通信 介绍: $broadcast的作用是将事件从父级作用域传播至子级作用域,包括自己.格 ...
- webdriver高级应用- 禁止Chrome浏览器的PDF和Flash插件
#encoding=utf-8 from selenium import webdriver # 导入Options类 from selenium.webdriver.chrome.options i ...
- pg 创建自增id
CREATE SEQUENCE original_site_id_seq START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; 先创 ...
- GBDT 与 XGBoost
GBDT & XGBoost ### 回归树 单棵回归树可以表示成如下的数学形式 \[ f(x) = \sum_j^Tw_j\mathbf{I}(x\in R_j) \] 其中\(T\)为叶节 ...