上手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实战总结的更多相关文章

  1. ElasticSearch实战-入门

    http://www.cnblogs.com/smartloli/ 1.概述 今天接着<ElasticSearch实战-日志监控平台>一文来给大家分享后续的学习,在<ElasticS ...

  2. ElasticSearch实战-日志监控平台

    1.概述 在项目业务倍增的情况下,查询效率受到影响,这里我们经过讨论,引进了分布式搜索套件——ElasticSearch,通过分布式搜索来解决当下业务上存在的问题.下面给大家列出今天分析的目录: El ...

  3. ElasticSearch实战

    ElasticSearch实战-入门 1.概述 今天接着<ElasticSearch实战-日志监控平台>一文来给大家分享后续的学习,在<ElasticSearch实战-日志监控平台& ...

  4. ElasticSearch实战-编码实践

    1.概述 前面在<ElasticSearch实战-入门>中给大家分享如何搭建这样一个集群,在完成集群的搭建后,今天给大家分享如何实现对应的业务功能模块,下面是今天的分享内容,目录如下所示: ...

  5. I-team 博客全文检索 Elasticsearch 实战

    一直觉得博客缺点东西,最近还是发现了,当博客慢慢多起来的时候想要找一篇之前写的博客很是麻烦,于是作为后端开发的楼主觉得自己动手丰衣足食,也就有了这次博客全文检索功能Elasticsearch实战,这里 ...

  6. ElasticSearch实战系列二: ElasticSearch的DSL语句使用教程---图文详解

    前言 在上一篇中介绍了ElasticSearch集群和kinaba的安装教程,本篇文章就来讲解下 ElasticSearch的DSL语句使用. ElasticSearch DSL 介绍 Elastic ...

  7. ElasticSearch实战系列三: ElasticSearch的JAVA API使用教程

    前言 在上一篇中介绍了ElasticSearch实战系列二: ElasticSearch的DSL语句使用教程---图文详解,本篇文章就来讲解下 ElasticSearch 6.x官方Java API的 ...

  8. ElasticSearch实战系列四: ElasticSearch理论知识介绍

    前言 在前几篇关于ElasticSearch的文章中,简单的讲了下有关ElasticSearch的一些使用,这篇文章讲一下有关 ElasticSearch的一些理论知识以及自己的一些见解. 虽然本人是 ...

  9. ElasticSearch实战系列五: ElasticSearch的聚合查询基础使用教程之度量(Metric)聚合

    Title:ElasticSearch实战系列四: ElasticSearch的聚合查询基础使用教程之度量(Metric)聚合 前言 在上上一篇中介绍了ElasticSearch实战系列三: Elas ...

  10. ElasticSearch实战系列六: Logstash快速入门和实战

    前言 本文主要介绍的是ELK日志系统中的Logstash快速入门和实战 ELK介绍 ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是 ...

随机推荐

  1. C#热敏打印图片 串口打印图片

    原文:C#热敏打印图片 串口打印图片 如图,一步一步慢慢调出来的 //串口通信类 public System.IO.Ports.SerialPort serialPort = null; serial ...

  2. discuz电脑访问手机版域名怎么跳转到电脑版本

    用discuz论坛访问手机版本的域名不会自动跳转到电脑版本,而是会跳转到域名+misc.php?mod=mobile体验很不好.现提供修改方法:打开论坛根目录找到文件./source/class/di ...

  3. WPF 绑定到静态属性(4.5)

    1. 声明静态事件 /// <summary> /// 静态属性通知 /// </summary> public static event EventHandler<Pr ...

  4. WPF常见内存泄露

    Event handlers leak This type of leak occurs when subscribing an object (let's call it listener) to ...

  5. Qt中使用Boost

    编译BOOST库 bjam stage --toolset=qcc --without-graph --without-graph_parallel --without-math --without- ...

  6. C++成员函数指针错误用法警示(成员函数指针与高性能的C++委托,三篇),附好多评论

    今天做一个成绩管理系统的并发引擎,用Qt做的,仿照QtConcurrent搞了个模板基类.这里为了隐藏细节,隔离变化,把并发的东西全部包含在模板基类中.子类只需注册需要并发执行的入口函数即可在单独线程 ...

  7. 零元学Expression Blend 4 - Chapter 31 看如何简单的把SampleData 绑进ListBox里

    原文:零元学Expression Blend 4 - Chapter 31 看如何简单的把SampleData 绑进ListBox里 前面几章连续讲到ListBox的运用,本章要讲得是如何简单的把Sa ...

  8. foreach获取索引值

    List<" }; foreach (string item in items) { int index = items.IndexOf(item); Console.WriteLin ...

  9. 第一次做C++项目的一点小总结

    本人原本一菜鸟java程序员,但业余涉猎还算广泛,稍微了解些C++内容.主要之前曾爱好过汇编语言.所以对于C语言能从汇编层面加以理解,C++则是在此基础上又加了面向对象.stl等一类东西嘛. 这次做了 ...

  10. 读取注册表获取Windows系统XP/7/8/10类型(使用wcscmp比较wchar[]内容)

    很多方案是采用GetVersion.GetVersionEx这两个API来查询操作系统的版本号来判断当前的操作系统是Windows系列中的哪个,在Win10没有出现前,这种方法是行的通的,但是Win1 ...