Elasticsearch实战总结
上手elasticsearch有段时间了,主要以应用为主,未做深入的研究,下面就简单的日常作个简单的总结,做个记录。
版本问题
es版本繁杂,让首次使用的人无从下手。常见的有2+、5+版本,最新版已达6.1,迭代速度还是比较快的,但有个问题值得注意:每个版本间的API并不是完全兼容。
版本迭代速度快,导致的另一个问题外围的工具有些跟不上,比如客户端、迁移工具等等。建议采用5+版本。不至于太旧,享受不了新版本的功能,也不至于太新,导致外围工具用不了。
数据迁移
版本迭代速度快,你在用的版本会很快显得有些老旧,为享受到最新版本带来的益处,数据迁移是个必然的过程。
除了自己编码迁移外,还有几款方式可以使用,如Elasticsearch-dump、Elasticsearch-Exporter、logstash、snapshot、物理拷贝等。
各工具的使用依然受制于es的版本,如果采用snapshot备份、恢复,数据量大小不受限制,但不能跨版本使用,比如2+版本数据可以直接迁移至5+,但2+不能直接迁移至6+,只能通过5+版本做个过渡。
若不同版本间迁移数据,不建议采用物理拷贝的方式,以免出现意想不到的问题。如果使用dump的工具,数据量大的时候就显得不妥。数据集大的情况下,采用snapshot方式是较好的选择。
API
es基于lucene,sorl亦是基于lucene,所以这三者在使用方式上基本类似,有lucene或sorl基础的话,es的学习成本几乎更低。但每个版本的API又不完全一样,无缝迁移几乎不可能。还好es的提供RESTFul形式的http接口,语言无关性使其可以应用于各种语言体系下。
具体到Java体系下,就是Node client,Transport client,Rest client,Spring-data-elasticsearch,Spring-data-jest等等,可选择范围还是比较广泛的,鉴于es的版本迭代速度较快,API编写也要考虑es的版本问题。
安全问题
es本身安全方面做的不足,后来elastic公司出品了x-pack组件,来强化中间件的安全性。可惜的是,免费版本在安全方面基本缺失,但可以借助反向代理工具如Nginx或端口限制来提高其访问控制权限。
实际应用
结合Beats的ELK Stack或者是EFK(fluent)应用是比较常见的日志分析、监控架构,es被编写的初衷是为了让自己老婆方便搜索菜谱,当然这个愿望目前也没实现。
es更多的是在搜索引擎领域的应用,比如常见的搜索功能:近义词搜索、自动纠错、搜索结果分类聚合、拼音搜索、首拼搜索、检索关键字高亮等等。
电商应用中常用的推荐功能,采用es+mahout的方式也可以实现,收集用户的行为数据后,依托一定的基础算法就可以实现常见的:买过的还买了、看过的又看了、猜你喜欢等电商网站常见的功能,来促进销售。
虽说es为搜索而存在,在某些场景下,也需要实现数据的精确匹配搜索,在大数据量的情况下,比如千万级、亿级,在无特殊优化的情况下,其搜索效率远非Mysql等关系性库可比拟的,所以一般一些增量比较大、变化频率不高的数据,存储在es中是个极佳的选择。
大数据应用当下是如日中天,结合es-hadoop插件,es可以方便的与hadoop体系数据关联起来。
相关工具
成熟的产品总离不开外围丰富的工具集,es也不例外,比如官方的ELK Stack套件、X-pack、Beats工具集、APM应用等,es与mysql等关系数据库数据互通的工具elasticsearch-jdbc,监控es集群的Kopf插件,简单的UI访问管理工具-head插件,实现中文分词的ik的插件等等,还有其它插件工具集,网络搜索“Elasticsearch扩展性插件”就可以看到N多丰富的工具可用。
数据扩展
天生设计为分布式存储的es,集群配置更是简单的无以复加,只要把cluster.name设置相同,部署在同一可以发现的网段内,端口不冲突即可完成简单集群的配置,不熟悉数据分片采用默认配置即可,需要的话就特殊关注下分片策略的问题,生产环境最简单的应用建议部署两个实例,实现数据的简单备份。
关于上面提到es的常见搜索、推荐功能,后面会针对做一系列实践,逐个实现,降低入门者上手的门槛。
Elasticsearch实战总结的更多相关文章
- ElasticSearch实战-入门
http://www.cnblogs.com/smartloli/ 1.概述 今天接着<ElasticSearch实战-日志监控平台>一文来给大家分享后续的学习,在<ElasticS ...
- ElasticSearch实战-日志监控平台
1.概述 在项目业务倍增的情况下,查询效率受到影响,这里我们经过讨论,引进了分布式搜索套件——ElasticSearch,通过分布式搜索来解决当下业务上存在的问题.下面给大家列出今天分析的目录: El ...
- ElasticSearch实战
ElasticSearch实战-入门 1.概述 今天接着<ElasticSearch实战-日志监控平台>一文来给大家分享后续的学习,在<ElasticSearch实战-日志监控平台& ...
- ElasticSearch实战-编码实践
1.概述 前面在<ElasticSearch实战-入门>中给大家分享如何搭建这样一个集群,在完成集群的搭建后,今天给大家分享如何实现对应的业务功能模块,下面是今天的分享内容,目录如下所示: ...
- I-team 博客全文检索 Elasticsearch 实战
一直觉得博客缺点东西,最近还是发现了,当博客慢慢多起来的时候想要找一篇之前写的博客很是麻烦,于是作为后端开发的楼主觉得自己动手丰衣足食,也就有了这次博客全文检索功能Elasticsearch实战,这里 ...
- ElasticSearch实战系列二: ElasticSearch的DSL语句使用教程---图文详解
前言 在上一篇中介绍了ElasticSearch集群和kinaba的安装教程,本篇文章就来讲解下 ElasticSearch的DSL语句使用. ElasticSearch DSL 介绍 Elastic ...
- ElasticSearch实战系列三: ElasticSearch的JAVA API使用教程
前言 在上一篇中介绍了ElasticSearch实战系列二: ElasticSearch的DSL语句使用教程---图文详解,本篇文章就来讲解下 ElasticSearch 6.x官方Java API的 ...
- ElasticSearch实战系列四: ElasticSearch理论知识介绍
前言 在前几篇关于ElasticSearch的文章中,简单的讲了下有关ElasticSearch的一些使用,这篇文章讲一下有关 ElasticSearch的一些理论知识以及自己的一些见解. 虽然本人是 ...
- ElasticSearch实战系列五: ElasticSearch的聚合查询基础使用教程之度量(Metric)聚合
Title:ElasticSearch实战系列四: ElasticSearch的聚合查询基础使用教程之度量(Metric)聚合 前言 在上上一篇中介绍了ElasticSearch实战系列三: Elas ...
- ElasticSearch实战系列六: Logstash快速入门和实战
前言 本文主要介绍的是ELK日志系统中的Logstash快速入门和实战 ELK介绍 ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是 ...
随机推荐
- 细谈unity资源管理的设计
一.概要 本文主要说说Unity是如何管理的,基于何种方式,基于这种管理方式,又该如何规划资源管理,以及构建bundle,是后面需要详细讨论的. 二.Unity的资源管理方式 2.1 资源分类 uni ...
- Xcode自动注释插件: VVDocumenter使用和安装
开源插件: VVDocumenter 下载地址: https://github.com/onevcat/VVDocumenter-Xcode 使用效果: 使用方法: 在方法写///,效果同上图,下面有 ...
- android 录屏
录屏,google了一下,记录下来,以免FQ android 4.4 录屏可通过adb:adb shell screenrecord /sdcard/video.mp4 (未测试) android 5 ...
- 用python & bat写软件安装脚本 + HM NIS Edit自动生成软件安装脚本
2019-03-11更新:原来NSIS脚本也可以禁用64位文件操作重定向的! 1.在安装脚本的开始处定义 LIBRARY_X64. !include "MUI.nsh"!inclu ...
- .NET DataTable转换为JSON格式的字符串
在进行数据传递的时候,有时我们需要通过Ajax的方式或者其他的方式传递一个数据列表,可以将DataTable或者其他形式的数据列表转换为JSON的格式,通过Ajax实体的形式进行传递. 比如说: // ...
- SQL介绍及MySql的安装
数据库及SQL概念 数据库是按照数据结构存储和组织数据的仓库 结构化查询语言(Structured Query Language)简称SQL MySql:DBMS MySql安装 安装MySql服务端 ...
- SQL数据库连接池与C#关键字return
SQL数据库连接池: 先前做的一个Sharepoint项目,在上线后的不久,最近一直出现间歇性访问缓慢问题Sharepoint特性问题,并分析了其数据库服务器,发现所耗内存已经达到了97%. 所以断定 ...
- Django学习笔记(20)——BBS+Blog项目开发(4)Django如何使用Bootstrap
本文学习如何通过Django使用Bootstrap.其实在之前好几个Django项目中已经尝试使用过了Bootstrap,而且都留有学习记录,我已经大概有了一个大的框架,那么本文就从头再走一遍流程,其 ...
- 中转Webshell 绕过安全狗(一)
前言 听说中国菜刀里有后门.抓包我是没有监测到异常数据包.为了以防万一,且更好使用中国菜刀硬杠安全狗.笔者收集了一下资料.无耻的copy大佬的源码,只是在大佬的基础上简单修改了一下,达到Webshel ...
- outerHTML、innerHTML以及innerText三者的区别