目录

ES基本安装及应用

安装

​ 使用方式

这里在java中实现,首先引入客户端包

index alias的应用

同步DB数据到ES

ES核心概念

type类型弱化。

ES核心操作


ES基本安装及应用

通过lucene  进行发展而来,往上走,compass 最后开源 成为 es框架。

在大数据的情况,ES提供了分片 降低查询效率,提高存储的能力。

ES的使用场景: 给网站/APP添加搜索功能,存储、分析数据,管理、交互、分析空间信息,将ES用于GIS。

安装

  • 添加es用户

useradd es

passwd es

  • vi /etc/sysctl.conf

在文件最后面添加内容:

vm.max_map_count=262144

sysctl -p

一个jvm进程开启最多多少个线程。

  • vi /etc/security/limits.conf  

配置一个java进程最多开启多少个文件

添加如下内容:

* hard nofile 65536

* soft nofile 65536

* soft nproc 2048

* hard nproc 4096

  • vi /etc/security/limits.d/90-nproc.conf

修改如下内容:

* soft nproc 1024

#修改为

* soft nproc 4096

  • 安装JDK

tar -zxvf jdk1.8.0_11.tar.tgz

vi ~/.bash_profile

PATH=$PATH:$HOME/bin

export JAVA_HOME=/home/es/jdk1.8.0_11

export JRE_HOME=${JAVA_HOME}/jre

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH

export PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin:$PATH

export PATH

source ~/.bash_profile

  • 上传安装包

elasticsearch-6.5.3.tar.gz

jdk1.8.0_11.tar.tgz

es安装包下载地址

https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.2.tar.gz

对于es来说需要修改配置的 elasticsearch.yml 的集群配置名称

并且配置 操作系统不支持的拦截器 进行 配置好

后台启动  直接  elasticsearch -d

 使用方式

es本身是基于resutful风格的访问格式,因此在 安装完成过后 请求  就使用 put  get  delete post 的请求  在 kibana中 使用查询 ,直接使用put   里面 包含 properties

在使用时,有用户order等。

其中也包含了mapping的概念,映射;这样来说  在mybatis 还是spring  等等框架中,mapping都时映射的概念。

在使用时,直接  通过 post 命令就可以 把 对应的名称和 字段,存在es中

在搜索方式,按照不同的

这里在java中实现,首先引入客户端包

   <dependency><groupId>org.elasticsearch.client</groupId><artifactId>transport</artifactId><version>6.4.0</version></dependency><!-- https://mvnrepository.com/artifact/org.elasticsearch/elasticsearch --><dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>6.4.0</version></dependency>

在使用时,需要指定配置类。 并指定好连接信息。

嗅探:客户端只需要指定一个ES服务端节点连接信息,连接上之后,如果开启了嗅探机制,

就会自动拉取服务端各节点的信息到客户端,从而避免我们需要配置一长串服务端连接信息

 //配置信息Settings settings = Settings.builder().put("cluster.name", "es-study")        //指定集群名称.put("client.transport.sniff", true)        //自动嗅探.build();

构建client  指定ip、port

 //构建clientTransportClient client = new PreBuiltTransportClient(settings);//指定ip、portclient.addTransportAddress(new TransportAddress(InetAddress.getByName("192.168.90.131"), 9300));     //9300为TCP通信端口

构建request  , 构建搜索  search放入到request中  执行搜索

//构建requestSearchRequest request = new SearchRequest();request.indices("music");request.types("songs");//构建搜索SearchSourceBuilder search = new SearchSourceBuilder();search.query(QueryBuilders.matchQuery("songName", "take me to your heart"));search.timeout(new TimeValue(60, TimeUnit.SECONDS));//search放入到request中request.source(search);//执行搜索SearchResponse response = client.search(request).get();//获取命中的文档SearchHits hits = response.getHits();SearchHit[] hitArr = hits.getHits();System.out.println("搜索到" + hits.totalHits + "个文档");//处理命中的文档for (SearchHit hit : hitArr){//打印元信息System.out.println(hit.getType() + "," + hit.getScore());//打印原文档String sourceAsStrig = hit.getSourceAsString();System.out.println(sourceAsStrig);}

这都是基本请求方式,利用api,包括

index alias的应用

在Elasticsearch中给index起一个alias(别名),能够非常优雅的解决两个索引
无缝切换的问题。

db同步数据到es中,当同步完成之前,指向老的数据中。通过完成,在指向新的数据。保证同步过程是安全的。

在请求时,只需要 对别名进行操作就行。

执行场景,返回的数据,

使用alias可以切换索引,同时查询多个索引当中数据,以及当作视图处理。

同步DB数据到ES

市面上讨论的,将数据从DB同步到ES有logstash-input-jdbc、go-mysql-
elasticsearch、elasticsearch-jdbc,我们选用Logstash-input-jdbc来实现数据迁移。
需要基于时间去迁移数据,做数据进行迁移。

ES核心概念

在ES最初的设计中,index被当做类似DB的级别,能够对数据进行物理隔离,type相当于
数据库中的表,对数据进行逻辑划分,document是ES中的一条数据记录。
但这样的设计在ES 5.6以后开始有了变化,新版本的ES会逐步弱化type的概念,直到将
其移除。

这个概念在es中有个问题,关系型数据库中 有两个表 如果有相同的字段,是完全隔离开的。通过表名是可以隔开,不会有任何关系,  如果  type 中 有两个相同  user_name字段。

对于luence来说 它就是一个相同的字段。因此这两个字段类型一定要相同。
相同得字段非常多,压缩率降低,排列非常稀疏。

type类型弱化。

ES最先的设计是用索引类比关系型数据库的数据库,用mapping type 来类比表,
一个索引中可以包含多个映射类别。这个类比存在一个严重的问题

这个是不断的优化的过程,平滑的过度。

废除过后,升级 需要对数据进行转储,升级导致得问题。

升级过后,数据解决方案
reindex  将转换为三个index ,重新索引;  指定目标和源数据, dest  和source
还可以把type放到一个index中, 需要将id进行修改。重复得id.进行重新添加id.

ES核心操作

  • index操作:创建/删除index、开启/关闭index、添加/查看mapping、设置/查看settings

通过获取时,就可以拿到对应得详细信息

包括分片和副本的东西,也有这个概念。

在创建index时,设置副本 及分片的数量

包括获取时,可以看到读写的权限 的查看

对于配置来说  又 static 和dynamic 的   静态和 动态。   可以在数据跑的时候,就可以修改来区分的,例如设置 index .shard

关闭 index

打开index

对外提供服务的方式

读写权限

默认是都可以的。

执行下面的操作就可以禁止读取

禁止写入

索引模板

PUT /_template/music2
{"template" : "music*","order" :3,"settings" : {"number_of_shards" : 3},"mappings":{"_default_" : {"properties" : {"songName" : { "type" : "text"} }}}
}
  • document操作:索引/查询/更新/删除document、搜索document,执行script

索引文档

需要显示指定索引文档id。

使用post方法  就可以自动生成索引文档的id

明确查询文档

GET /music_v4/songs/5

删除文档

DELETE /music_v4/songs/5

索引文档

  • mapping操作:创建mapping、查询mapping、修改mapping

这部分解析放到下篇文章继续继续进行解析。

ES应用场景及核心概念一相关推荐

  1. Elasticsearch(一)——Es安装(三个必安工具、安装各种类型分词器)、Es 十大核心概念、通过 Kibana 操作 Es(中文分词、Es各种索引命令操作)

    Elasticsearch(一)--Es安装(三个必安工具.安装各种类型分词器).Es 十大核心概念.通过 Kibana 操作 Es(中文分词.Es各种索引命令操作) 一.Elasticsearch ...

  2. ElasticSearch第十讲 ES的核心概念以及什么是倒排索引和分析器

    核心概念 索引 index 一个索引就是一个拥有几分相似特征的文档的集合.比如说,可以有一个客户数据的索引,另一个产品目录的索引,还有一个订单数据的索引.一个索引由一个名字来标识(必须全部是小写字母的 ...

  3. Elasticsearch 入门 核心概念 数据结构 分词器 javaAPI

    ElasticSearch 1-今日内容 2-初识ElasticSearch 2.1-基于数据库查询的问题 2.2-倒排索引 2.2.1 评分TF/IDF/BM25计算 2.3-ES存储和查询的原理 ...

  4. 聊聊 Pulsar: Pulsar 的核心概念与基础架构

    一.Pulsar 介绍 Apache Pulsar 是 Apache 软件基金会的顶级项目,是下一代云原生分布式消息流平台,集消息.存储.轻量化函数式计算为一体,采用计算与存储分离架构设计,支持多租户 ...

  5. 2021年大数据ELK(五):Elasticsearch中的核心概念

    全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 Elasticsearch中的核心概念 一.索引 index 二 ...

  6. cocos2d-x一些核心概念介绍

    cocos2d-x一些核心概念介绍 Cocos2d-x中有很多概念,这些概念很多来源于动画.动漫和电影等行业,例如:导演.场景和层等概念,当然也有些有传统的游戏的概念.Cocos2d-x中核心概念:导 ...

  7. nacos 本地测试_微服务架构系列之Nacos 配置核心概念

    上次讲了<微服务架构之Nacos配置中心之配置MySQL数据库>,本次讲述Nacos 配置核心概念.原作者:哈喽沃德先生,谢谢关注哈喽沃德先生. 1.配置 为什么需要配置?概念. 在系统开 ...

  8. Kafka:Kafka核心概念

    1 消息系统简介 1.1 为什么要用消息系统 ? 解耦 各位系统之间通过消息系统这个统一的接口交换数据,无须了解彼此的存在: 冗余 部分消息系统具有消息持久化能力,可规避消息处理前丢失的风险: 灵活性 ...

  9. Webpack核心概念解析

    原文链接:banggan.github.io/2019/05/09/- Webpack核心概念解析 终于忙完了论文,可以愉快的开始学习了,重拾起重学前端.webpack以及Vue的源码解读作为入职前的 ...

最新文章

  1. ASP.NET输出JSON格式数据
  2. 树形结构:递归转化为迭代,万能通用方法,分治策略基于栈的实现
  3. 单片机c语言参考文献最新,[2018年最新整理]10个单片机C语言实例.doc
  4. 京东集团副总裁王楠:数智化是打造国际消费中心城市的必由之路
  5. 子网掩码(subnet mask)与默认网关(default gateway)
  6. 洛谷P1306 斐波那契公约数
  7. 火星坐标系(高德)和84坐标系互换
  8. 做项目管理需要哪些技能?
  9. sql left()函数
  10. mysql修改金钱_mysqli修改数据库
  11. MySQL 数据库的基本类型详解(04)
  12. Java总结IO篇之字符流
  13. 如何判断如何判断RS232线是直连还是交叉连线
  14. 如何定制allure报告的logo
  15. Content Provider (内容提供者)
  16. Winsock协议目录
  17. 离散数学-代数系统总结3-同态
  18. Android实现实时视频聊天功能|源码 Demo 分享
  19. 给自己定个小目标 --java
  20. imba命令_Imba简介:兼容JavaScript的语言,可快速实现DOM更新

热门文章

  1. [百分浏览器-centbrowser]不能播放视频处理方法
  2. osgearth加载国界线、省界线、城市线
  3. 鲲鹏云服务器运行python项目_鲲鹏云实验-Python+Jupyter机器学习基础环境
  4. 无线串口服务器的配置与连接调试,使用WIFI串口服务器USR-WIFI232-604与485读卡器实现通信...
  5. Solved Issues
  6. java Date days_JAVA的Date类与Calendar类(常用方法)
  7. 开发笔记-内表指针赋值
  8. 银联 backreceive.php,银联支付报文格式错误5100030
  9. 谈谈Java对象的生命周期
  10. CSV文件转换成shp文件后通过IDW法插值处理生成栅格