ElasticSearch使用索引生命周期管理 作者: admin 时间: 2020-07-10 分类: elasticsearch 评论 # ElasticSearch使用索引生命周期管理 ILM( Index Lifecycle Management 索引生命周期管理)是 Elasticsearch6.7 正式推出的功能,使用 ILM 可以在索引中设置策略,自动根据索引的存在时间、文档数、大小做滚动、删除、移动等操作。 - 阅读剩余部分 -
ElasticSearch 数据同步在项目中的实践经验 作者: admin 时间: 2020-06-17 分类: 默认分类,elasticsearch 评论 #ElasticSearch 数据同步在项目中的实践经验 接触ES也有两年的时间了,在两家公司、不同的项目上接触到了不同的ES使用方法,走了不少岔路,也积累了不少的经验,接下来分析一下我接触过的项目中使用ES的方法。 ## 离线数据同步--Logstash 使用 Logstash 可以 通过简单的配置文件实现秒级的数据增量同步,但是缺点也很明显,在 MySQL->ES 千万数据量级同步时,Logstash 宿主机很容易因内存不足而杀死 Logstash 进程。 - 阅读剩余部分 -
elasticsearch suggest实现搜索词自动补全 作者: admin 时间: 2020-03-11 分类: elasticsearch 评论 ###如何实现 利用ES的suggest completion提示器进行关键词补全,completion提示器是由前缀树实现的,数据全部装载在内存中,速度极快。 ###现有的数据 每天每个关键词的 PV UV 搜索次数 无结果次数 ###自动补全实现 > pv/uv 每个用户有几张有效数据 (系数 2) pv/search_cnt 每次搜索有几个有效数据 (系数1) search_cnt/uv 每个用户搜几次 (系数0.05) no_results_pv/search_cnt 每次搜索有几个无效图 (系数-0.5 负反馈) · 对七天内数据(PV UV search_cnt)进行加权融合 算出权重 · 存入ES · 清洗敏感词,补全拼音 - 阅读剩余部分 -
logstash 从 MySQL 动态同步日志数据到 ElasticSearch 作者: admin 时间: 2019-11-26 分类: elasticsearch 评论 ### 需要同步的表 搜索统计表 > 每天会新建一张表,格式为20191122_search_statistics,记录了每种搜索结果的点击次数等,需每天动态查询数据,动态创建索引。数据量每天300万到400万 搜索趋势表 > 一张表,需增量同步到es,目前数据量在两千多万。 以上两种情况最为典型,搜索统计表需要动态查询数据库,创建相应的索引。搜索趋势表为总量查询千万数据,增量同步到es。 在这个需求中基于开发效率和稳定性的考虑,使用logstash同步数据。相比较写脚本同步,logstash更适合离线数据/无实时性要求数据,且实现更快便于维护,每个任务只属于一组input-filter-output配置。 - 阅读剩余部分 -
记一次logstash-input-jdbc配置文件type冲突血泪史 作者: admin 时间: 2018-06-26 分类: elasticsearch 评论 # 记一次logstash-input-jdbc配置文件type冲突血泪史 ### 起因 统计需求,需要将某几份数据按时间分组进行统计分析,使用MySQL进行分组查询,不只SQL语句繁琐,且效率较慢,按时间分组查询SQL如下: ```sql -- month select CONCAT(YEAR(stat_date),'_',DATE_FORMAT(stat_date,'%m')) months ,sum(total_amount) as count_amount, sum(total_new_user) as count_new_user, sum(da_active_user) as count_active_user from xxx WHERE `stat_date` BETWEEN '2016-01-02' AND '2017-05-30' group by months; -- 季度 select CONCAT(YEAR(stat_date),'_',quarter(stat_date)) qu,sum(total_amount) as count_amount, sum(total_new_user) as count_new_user, sum(da_active_user) as count_active_user from xxx WHERE `stat_date` BETWEEN '2016-01-02' AND '2017-05-30' group by qu; -- 周 select CONCAT(YEAR(stat_date),'_',DATE_FORMAT(stat_date,'%U')) weeks,sum(total_amount) as count_amount, sum(total_new_user) as count_new_user, sum(da_active_user) as count_active_user from xxx WHERE `stat_date` BETWEEN '2016-01-02' AND '2017-05-30' group by weeks; -- 天 select CONCAT(YEAR(stat_date),'_',DATE_FORMAT(stat_date,'%m'),'_',DATE_FORMAT(stat_date,'%d')) days, sum(total_amount) as count_amount, sum(total_new_user) as count_new_user, sum(da_active_user) as count_active_user from xxx WHERE `stat_date` BETWEEN '2016-01-02' AND '2017-05-30' group by days; ``` - 阅读剩余部分 -