话题 (elasticsearch 2.1) 已与当前话题合并
elasticsearch

elasticsearch

reindex索引原索引库中index为no,只存储的字段,在目标索引库中没有值

Elasticsearchcaster_QL 回复了问题 • 2 人关注 • 1 个回复 • 122 次浏览 • 6 天前 • 来自相关话题

logstash推送数据到es执行两次脚本

回复

Logstashdongkaihuahit 发起了问题 • 1 人关注 • 0 个回复 • 126 次浏览 • 2022-01-06 16:31 • 来自相关话题

es nested 根据多条件排除数据

ElasticsearchsimaGang 回复了问题 • 2 人关注 • 1 个回复 • 727 次浏览 • 2022-01-05 21:17 • 来自相关话题

手动执行forceMerge索引后,由于磁盘空间不够失败,索引变red,磁盘空间也没有释放,请问怎么恢复?

Elasticsearchzmc 回复了问题 • 2 人关注 • 1 个回复 • 116 次浏览 • 2022-01-04 21:34 • 来自相关话题

es索引存储膨胀过快的原因?

Elasticsearchlaoyang360 回复了问题 • 2 人关注 • 1 个回复 • 193 次浏览 • 2022-01-02 21:34 • 来自相关话题

【年度盛会】Elastic 中国开发者大会 2021 八折购票火热进行中

活动liaosy 发表了文章 • 0 个评论 • 190 次浏览 • 2021-12-29 11:06 • 来自相关话题

【年度盛会】2021 Elastic 中国开发者大会,来自Elastic、阿里、腾讯、谷歌、字节等业界专家带来的干货分享,精彩内容不容错过,八折购票火热进行中(折扣码: 80OFF),扫码即可报名购票。  
开发者大会2021议题海报2_讲师.png
  【更多演讲嘉宾介绍】 https://conf.elasticsearch.cn/2021/speaker.html 【大会官网】 https://conf.elasticsearch.cn
【年度盛会】2021 Elastic 中国开发者大会,来自Elastic、阿里、腾讯、谷歌、字节等业界专家带来的干货分享,精彩内容不容错过,八折购票火热进行中(折扣码: 80OFF),扫码即可报名购票。  
开发者大会2021议题海报2_讲师.png
  【更多演讲嘉宾介绍】 https://conf.elasticsearch.cn/2021/speaker.html 【大会官网】 https://conf.elasticsearch.cn

【1月8日】Elastic 中国开发者大会 2021 日程新鲜出炉!福利票抢先购!

Elasticsearchliaosy 发表了文章 • 0 个评论 • 159 次浏览 • 2021-12-27 21:46 • 来自相关话题

重要的事情说三遍

  • Elastic 中国开发者大会 2021 的精彩日程现已上线!
  • Elastic 中国开发者大会 2021 的精彩日程现已上线!
  • Elastic 中国开发者大会 2021 的精彩日程现已上线!

关于本次大会

Elastic 中国开发者大会 2021 是由 Elastic 官方、Elastic 中文社区和极限科技联合主办的开发者大会,作为中国国内唯一一个专门讨论 Elasticsearch 开源技术的大会,是中国最权威和最具实力干货的技术大会,其专业性和内容的质量一直以来在业内都是有口皆碑。本次大会邀请的演讲嘉宾有来自 Elastic 官方、Google、腾讯、阿里巴巴、字节跳动、vivo等众多公司的技术专家,为中国广大的 Elasticsearch 开发者提供一个技术交流和学习切磋的地方,汇集业界众多的成功案例,集思广益,发散思维,促进社区和行业的进步。

更多详细介绍请参见大会官网:

https://conf.elasticsearch.cn

关于大会议程

开发者大会2021议程_8折.png

精彩内容不容错过,八折购票火热进行中(折扣码: 80OFF),扫码购买。

dis_max查询速度慢的问题

ElasticsearchFreeflying 回复了问题 • 4 人关注 • 4 个回复 • 237 次浏览 • 2021-12-20 17:25 • 来自相关话题

elasticsearch7.x关闭大索引出现集群状态为red

Elasticsearchmedcl 回复了问题 • 2 人关注 • 1 个回复 • 299 次浏览 • 2021-12-20 09:36 • 来自相关话题

如何定位慢查询请求或错误查询请求的访问Ip

Elasticsearchcaster_QL 回复了问题 • 3 人关注 • 2 个回复 • 266 次浏览 • 2021-12-10 11:35 • 来自相关话题

match_phrase_prefix返回结果如何使越靠前的单词占有的权重越高,排序更靠前

Elasticsearchxiaowuge 回复了问题 • 4 人关注 • 2 个回复 • 293 次浏览 • 2021-12-10 09:17 • 来自相关话题

是否存在Solr query URL到ES query DSL工具?

Elasticsearchprintlove 回复了问题 • 2 人关注 • 1 个回复 • 1004 次浏览 • 2021-12-09 16:30 • 来自相关话题

es的统计监控里观察到 index的次数和get的次数对不上

回复

Elasticsearchcode4j 发起了问题 • 1 人关注 • 0 个回复 • 242 次浏览 • 2021-12-02 15:02 • 来自相关话题

发布一个免费的 Elasticsearch 多集群监控和管理平台 - 极限数据平台

Elasticsearchmedcl 发表了文章 • 12 个评论 • 2014 次浏览 • 2021-11-22 18:48 • 来自相关话题

随着单个 Elasticsearch 集群规模的越来越大,大家要么在拆集群的路上,要么是已经是多套集群了, 据路边社消息,一个公司超过5个集群的情况已经变得非常普遍,而管理多个集群着实是有点痛苦,比如常规的玩法可能是一套集群一个 Kibana,集群一多,切换来切换去就有点懵圈了有木有?

fansile.gif

作为一个优雅的程序员或者运维管理员,是可忍孰不可忍啊。

另外,多个集群的监控也是一个麻烦事,目前常见的几种监控如:

  • 使用 Kibana 自带的监控
  • 使用 Prometheus + Grafana
  • 使用 Zabbix

Kibana 自带的监控可以很好的满足单个集群的监控场景,不过集群规模大了之后,经常会出现指标丢失的问题,如果使用单独的监控集群,需要修改每个节点的配置,集群都需要重启,对于已经上了生产的集群,有点不方便,另外多集群监控需要商业授权。

e82a31225ca28ed8029e0681f9346ee2.gif

那 Prometheus 呢, 一个 Elasticsearch 集群如果要监控起来,首先需要部署一个 Exporter 来暴露集群指标,然后部署一套Prometheus 来采集 Elasticsearch 指标,采集完了之后再部署一套 Grafana 来进行报表分析,不同的集群要做好切换,简单的事情,搞复杂了,整个监控体系偏重,维护成本高。

Zabbix 和 Prometheus 的场景差不多,就不赘述了。

530a83558eabaa4ae4eb25501349a7a3_16590_250_187.jpeg

那么问题来了,有没有一个更加简单方便的多集群监控和管理方案呢,并且要支持不同版本的集群,最好是 v2、v5、v6、v7 以及最新的 v8 都能统统接管,哈哈,没错了,这里给大家介绍一个我们极限实验室团队最近开发出来的一款免费的多集群监控和管理工具-极限数据平台,目前版本 v0.1,新鲜出炉。

废话不多少,咱们直接看图说话:

Jietu20211122-183111.jpg

首先是多集群的纳管,目前从 1.0 到最新的 8.0 统统都可以接进来。

Jietu20211122-183020.jpg

然后就是集群的监控拉,要多简单有多简单,就是一个开关的事情,注册集群的时候,启用即开启监控,目标集群啥都不用动,费那劲干啥。

监控界面如图:

Jietu20211122-183309.jpg

集群概览,总体情况一目了然。

Jietu20211122-183438.jpg

各个节点信息,分门别类。

Jietu20211122-183504.jpg

各个索引级别的信息,挨个查看。

Jietu20211122-183558.jpg

多个集群之间的监控查看一键切换,非常方便。

查看监控的时候,发现不对劲,要操作一下集群,直接调出控制台,如下图:

Jietu20211122-183717.jpg

常用的操作命令,可以保存起来,方便下次使用。

Jietu20211122-183815.jpg

别再保存在记事本里面了,下次又找不到,直接加载执行就好了。

Jietu20211122-183924.jpg

好了,你要是用 Elasticsearch 不知道这个工具,那就 out 了,赶快耍起来吧。

下载地址:

http://release.elasticsearch.cn/console/snapshot/

安装巨简单,简直懒得说,一个二进制可执行文件,一个 yml 配置文件,里面修改 Elasticsearch 地址,结束。

可以在这里查看 介绍和 Demo 演示视频

最后,欢迎关注极限实验室,获取更多 Elasticsearch 免费工具及业界资讯的第一手消息。

WechatIMG700.jpeg

极限网关入门视频教程已发布

Elasticsearchmedcl 发表了文章 • 4 个评论 • 319 次浏览 • 2021-11-21 11:41 • 来自相关话题

录制了一系列视频教程,介绍极限网关的使用,不断更新中,第一次做 up 主,记得一键三连,支持一下。:)      极限网关地址:https://极限网关.com
录制了一系列视频教程,介绍极限网关的使用,不断更新中,第一次做 up 主,记得一键三连,支持一下。:)      极限网关地址:https://极限网关.com

发布一个免费的 Elasticsearch 多集群监控和管理平台 - 极限数据平台

Elasticsearchmedcl 发表了文章 • 12 个评论 • 2014 次浏览 • 2021-11-22 18:48 • 来自相关话题

随着单个 Elasticsearch 集群规模的越来越大,大家要么在拆集群的路上,要么是已经是多套集群了, 据路边社消息,一个公司超过5个集群的情况已经变得非常普遍,而管理多个集群着实是有点痛苦,比如常规的玩法可能是一套集群一个 Kibana,集群一多,切换来切换去就有点懵圈了有木有?

fansile.gif

作为一个优雅的程序员或者运维管理员,是可忍孰不可忍啊。

另外,多个集群的监控也是一个麻烦事,目前常见的几种监控如:

  • 使用 Kibana 自带的监控
  • 使用 Prometheus + Grafana
  • 使用 Zabbix

Kibana 自带的监控可以很好的满足单个集群的监控场景,不过集群规模大了之后,经常会出现指标丢失的问题,如果使用单独的监控集群,需要修改每个节点的配置,集群都需要重启,对于已经上了生产的集群,有点不方便,另外多集群监控需要商业授权。

e82a31225ca28ed8029e0681f9346ee2.gif

那 Prometheus 呢, 一个 Elasticsearch 集群如果要监控起来,首先需要部署一个 Exporter 来暴露集群指标,然后部署一套Prometheus 来采集 Elasticsearch 指标,采集完了之后再部署一套 Grafana 来进行报表分析,不同的集群要做好切换,简单的事情,搞复杂了,整个监控体系偏重,维护成本高。

Zabbix 和 Prometheus 的场景差不多,就不赘述了。

530a83558eabaa4ae4eb25501349a7a3_16590_250_187.jpeg

那么问题来了,有没有一个更加简单方便的多集群监控和管理方案呢,并且要支持不同版本的集群,最好是 v2、v5、v6、v7 以及最新的 v8 都能统统接管,哈哈,没错了,这里给大家介绍一个我们极限实验室团队最近开发出来的一款免费的多集群监控和管理工具-极限数据平台,目前版本 v0.1,新鲜出炉。

废话不多少,咱们直接看图说话:

Jietu20211122-183111.jpg

首先是多集群的纳管,目前从 1.0 到最新的 8.0 统统都可以接进来。

Jietu20211122-183020.jpg

然后就是集群的监控拉,要多简单有多简单,就是一个开关的事情,注册集群的时候,启用即开启监控,目标集群啥都不用动,费那劲干啥。

监控界面如图:

Jietu20211122-183309.jpg

集群概览,总体情况一目了然。

Jietu20211122-183438.jpg

各个节点信息,分门别类。

Jietu20211122-183504.jpg

各个索引级别的信息,挨个查看。

Jietu20211122-183558.jpg

多个集群之间的监控查看一键切换,非常方便。

查看监控的时候,发现不对劲,要操作一下集群,直接调出控制台,如下图:

Jietu20211122-183717.jpg

常用的操作命令,可以保存起来,方便下次使用。

Jietu20211122-183815.jpg

别再保存在记事本里面了,下次又找不到,直接加载执行就好了。

Jietu20211122-183924.jpg

好了,你要是用 Elasticsearch 不知道这个工具,那就 out 了,赶快耍起来吧。

下载地址:

http://release.elasticsearch.cn/console/snapshot/

安装巨简单,简直懒得说,一个二进制可执行文件,一个 yml 配置文件,里面修改 Elasticsearch 地址,结束。

可以在这里查看 介绍和 Demo 演示视频

最后,欢迎关注极限实验室,获取更多 Elasticsearch 免费工具及业界资讯的第一手消息。

WechatIMG700.jpeg

Elastic 中国开发者大会 2021 开启了,预热铁粉票已开抢,手慢无!

活动liaosy 发表了文章 • 0 个评论 • 475 次浏览 • 2021-11-11 17:45 • 来自相关话题

banner-1080x640-infini.png
Elastic 中国开发者大会 2021 是由 Elastic 官方、Elastic 中文社区和极限科技联合主办的开发者大会,作为中国国内唯一一个专门讨论 Elasticsearch 开源技术的大会,是中国最权威和最具实力干货的技术大会,其专业性和内容的质量一直以来在业内都是有口皆碑,大会最早发起于 2013 年初一个很小的线下聚会,之后每年迅速成长,往年大会的演讲嘉宾有来自 Elastic 官方、百度、腾讯、阿里巴巴、360、微博、美团、58、苏宁等众多公司的技术专家,带来过众多精彩的分享,与会听众大多为大数据领域相关的架构师、技术经理与一线开发工程师和运维工程师。 我们本着非盈利目的来举办大会,今年的大会将于2022年1月8号在深圳举行,举办开发者大会的目的是为中国广大的 Elasticsearch 开发者提供一个技术交流和学习切磋的地方,汇集业界众多的成功案例,集思广益,发散思维,促进社区和行业的进步。   大会官网:https://conf.elasticsearch.cn Elasticsearch铁粉福利: 预热-铁粉票(79元/张), 共计100张,数量有限,赶紧去报名抢购吧! 购票地址:https://www.bagevent.com/event/7899116   同时大会也在公开征集演讲议题与合作赞助商,欢迎各位Elastic相关技术大咖报名参与分享,欢迎有兴趣的赞助商金主大大前来合作。 演讲报名申请:http://elasticsearch.mikecrm.com/uXH61JL 赞助合作申请:http://elasticsearch.mikecrm.com/6LGkKK0    

【杭州站】Elastic & 阿里云 Meetup 6月5号

活动liaosy 发表了文章 • 0 个评论 • 939 次浏览 • 2021-05-22 17:38 • 来自相关话题

banner

活动介绍

本次Meetup杭州站由阿里云和Elastic联合举办,邀请来自滴滴、安恒信息、阿里云的资深技术专家探讨在搜索、安全、内核优化等方向的实践与创新,以及发布由数十位优秀技术开发者共创而成的实战指南,共同分享 Elasticsearch技术大咖的一线经验与深度思考。

报名方式

链接:https://www.bagevent.com/event/7449056
扫码:
sign up

活动时间

2021年06月05日 13:00-17:30

活动地址

浙江省杭州市余杭区阿里巴巴西溪园区访客中心 206-S越秀书院

活动流程

13:00~13:15 签到入座
13:15~13:30 开发者共创书籍《Elastic Stack 实战手册V1.0》发布
13:30~14:30 滴滴Elasticsearch内核优化之路
            韩宝君 滴滴Elasticsearch资深开发工程师/ES社区Contributor
14:30~15:30 Elasticsearch在SIEM的应用与实践
            汤乐奇 安恒信息AiLPHA大数据资深研发经理
15:30~16:30 Elasticsearch Serverless 云原生时代的创新实践
            马华标(城破) 阿里巴巴高级技术专家/阿里云ES内核研发负责人
16:30~17:20 圆桌交流
17:20~17:30 抽奖合影

活动奖品

阿里云双肩包、T恤、Elastic定制礼物

阿里云ACE

阿里云ACE即全称 Alibaba Cloud Engineer,是意为阿里云的工程师、代表着云计算的建设者。同时“ACE”又是扑克牌中的“A”,因此阿里云ACE也寓意着是云计算领域王牌的一群人。在线上,ACE拥有专属的页面和29个社群,承载论坛及专栏等内容; 在线下,ACE通过组织丰富的活动,包括技术沙龙、TechDay、Meetup、官方互动等来形成本地化的开发者的学习、社交平台。

通过ACE组织的各种活动,ACE用户可以结识本地的开发者,收获前沿知识,积累行业经验,并加深对阿里云的了解。

活动交流及杭州ACE同城会钉群

DingTalk

活动海报

poster

2021 Elastic 中文社区深圳线下 Meetup 重磅重启,讲师招募进行中!

活动howardhuang 发表了文章 • 0 个评论 • 923 次浏览 • 2021-05-21 15:49 • 来自相关话题

各位社区的小伙伴们大家好!过去一年多以来,疫情阻挡了我们聚会的脚步,但阻挡不了我们 ES 技术演进的脚步,ES 中文社区前期持续举办了多期线上 meetup 活动,输出了多个高质量的技术主题分享。如今在深圳,线下 meetup 活动重磅重启!6月26日我们将在深圳腾讯滨海大厦多功能厅,和大家欢聚一堂,畅谈 ES 各个领域最新的黑科技。目前讲师招募持续进行中,欢迎各路大佬扫码报名!
Elastic_中文社区深圳_Meetup.jpg
活动链接:https://www.bagevent.com/event/7440283
各位社区的小伙伴们大家好!过去一年多以来,疫情阻挡了我们聚会的脚步,但阻挡不了我们 ES 技术演进的脚步,ES 中文社区前期持续举办了多期线上 meetup 活动,输出了多个高质量的技术主题分享。如今在深圳,线下 meetup 活动重磅重启!6月26日我们将在深圳腾讯滨海大厦多功能厅,和大家欢聚一堂,畅谈 ES 各个领域最新的黑科技。目前讲师招募持续进行中,欢迎各路大佬扫码报名!
Elastic_中文社区深圳_Meetup.jpg
活动链接:https://www.bagevent.com/event/7440283

《腾讯Elasticsearch海量规模背后的内核优化剖析》答疑

Elasticsearchhowardhuang 发表了文章 • 37 个评论 • 5294 次浏览 • 2020-05-09 17:05 • 来自相关话题

今天下午的《腾讯Elasticsearch海量规模背后的内核优化剖析》分享 大家反映强烈,由于时间关系,大家的问题没能及时答复,这里集中解答,大家如果还有其它疑问也可以持续提问。感谢大家的关注! 另外腾讯云上有内核增强版的ES服务,包含了我们所有的内核优化项,欢迎大家体验! 团队也在持续招聘,欢迎简历来砸:danielhuang@tencent.com; johngqjiang@tencent.com

今天下午的《腾讯Elasticsearch海量规模背后的内核优化剖析》分享 大家反映强烈,由于时间关系,大家的问题没能及时答复,这里集中解答,大家如果还有其它疑问也可以持续提问。感谢大家的关注! 另外腾讯云上有内核增强版的ES服务,包含了我们所有的内核优化项,欢迎大家体验! 团队也在持续招聘,欢迎简历来砸:danielhuang@tencent.com; johngqjiang@tencent.com

【深圳ES Meetup】李猛:DB与ES结合,是业务系统实践值得探讨的事

活动nodexy 发表了文章 • 2 个评论 • 3586 次浏览 • 2019-11-09 17:41 • 来自相关话题

1月16日 Elastic 中文社区深圳 Meetup 上,李猛将带来关于ES 实践方面的主题分享。借此机会,我们邀请到他聊聊作为ES深度用户在探索ES过程中的心得以及对ES社区、活动、未来生态发展等方面的看法。   李猛 架构师/Elastic认证工程师 Elastic Stack产品深度用户,2012/2013年接触Elasticsearch,对Elastic Stack开发、架构、运维等方面有深入体验,实践过多种ES项目,最暴力的大数据分析应用,最复杂的业务系统应用等。   Q1、作为深度用户,当初是基于什么样的动机和考量选择使用 ES 产品并持续深入探索的? A:易用性与功能强大,个人平常比较爱好算法研究,选择任何数据产品本质上都是选择算法,算法的本质决定了产品的强大。 架构是个宏观问题,ES的设计是标准的分布式,架构的优秀设计带来的是易用性; 算法是个微观问题,ES集成了很多优秀的算法,这样在很多业务场景下都可满足,而不用更换不同的数据产品,这样也会带来产品运维方面的便利性,保障应用的技术栈不至于过多复杂。 Q2、在探索 DB 与 ES 的互通方面,有遇到什么难题吗?最后是如何解决的呢? A:数据一致性与实时性问题。应用架构思维变化,业务调整变化与技术方案变化。 Q3、结合您的实践经历,对 ES 目前的生态发展、应用以及未来有什么样的看法? A:ES目前主要应用是在单索引条件下查询,附带有简单的聚合分析能力。复杂的分析能力不具备,ES未来会增强复杂的分析能力,比如有条件的支持2个索引的关联分析。 Q4、您对本次技术沙龙活动的主题分享有什么期待? A:期望更多人参加探讨更多的业务应用场景,比如传统应用方面、大数据方面、机器学习方面;帮助大家以后项目实战有更多的案例参考。 Q5、您对 Elastic 中文社区发展有什么意见或建议呢? A:ES目前在国内的热度几乎超过任何数据库,几乎大大小小的公司,都在使用;从开始入门到成熟运用多多少少都会遇到很多问题,  希望社区活动更加多一点,业余的交流更多一点。比如可以办一些,走进某些企业的活动。 11月16日 Elastic 中文社区深圳 Meetup 火热报名中 分享主题:《DB到ES数据实时同步之路》 李猛  主题摘要:关系型数据库天然具备最严格的事务特性,有效的保证数据库一致性,但在高效查询方面显得很无力;Elasticsearch天然具备高效的查询算法,但在数据一致性方面却是先天缺陷;如何将DB与ES的优点结合,是任何一个企业公司业务系统实践都值得探讨的事。
b89578fa-29bc-49c3-a515-837cf1dcf7c3.png
 

【线下活动-分享主题征集-武汉】 2019年3月 Elastic&尚德机构技术沙龙

活动medcl 回复了问题 • 3 人关注 • 1 个回复 • 3998 次浏览 • 2019-02-22 15:42 • 来自相关话题

reindex索引原索引库中index为no,只存储的字段,在目标索引库中没有值

回复

Elasticsearchcaster_QL 回复了问题 • 2 人关注 • 1 个回复 • 122 次浏览 • 6 天前 • 来自相关话题

logstash推送数据到es执行两次脚本

回复

Logstashdongkaihuahit 发起了问题 • 1 人关注 • 0 个回复 • 126 次浏览 • 2022-01-06 16:31 • 来自相关话题

es nested 根据多条件排除数据

回复

ElasticsearchsimaGang 回复了问题 • 2 人关注 • 1 个回复 • 727 次浏览 • 2022-01-05 21:17 • 来自相关话题

手动执行forceMerge索引后,由于磁盘空间不够失败,索引变red,磁盘空间也没有释放,请问怎么恢复?

回复

Elasticsearchzmc 回复了问题 • 2 人关注 • 1 个回复 • 116 次浏览 • 2022-01-04 21:34 • 来自相关话题

es索引存储膨胀过快的原因?

回复

Elasticsearchlaoyang360 回复了问题 • 2 人关注 • 1 个回复 • 193 次浏览 • 2022-01-02 21:34 • 来自相关话题

dis_max查询速度慢的问题

回复

ElasticsearchFreeflying 回复了问题 • 4 人关注 • 4 个回复 • 237 次浏览 • 2021-12-20 17:25 • 来自相关话题

elasticsearch7.x关闭大索引出现集群状态为red

回复

Elasticsearchmedcl 回复了问题 • 2 人关注 • 1 个回复 • 299 次浏览 • 2021-12-20 09:36 • 来自相关话题

如何定位慢查询请求或错误查询请求的访问Ip

回复

Elasticsearchcaster_QL 回复了问题 • 3 人关注 • 2 个回复 • 266 次浏览 • 2021-12-10 11:35 • 来自相关话题

match_phrase_prefix返回结果如何使越靠前的单词占有的权重越高,排序更靠前

回复

Elasticsearchxiaowuge 回复了问题 • 4 人关注 • 2 个回复 • 293 次浏览 • 2021-12-10 09:17 • 来自相关话题

是否存在Solr query URL到ES query DSL工具?

回复

Elasticsearchprintlove 回复了问题 • 2 人关注 • 1 个回复 • 1004 次浏览 • 2021-12-09 16:30 • 来自相关话题

es的统计监控里观察到 index的次数和get的次数对不上

回复

Elasticsearchcode4j 发起了问题 • 1 人关注 • 0 个回复 • 242 次浏览 • 2021-12-02 15:02 • 来自相关话题

es的基础安全从哪个版本开始免费

回复

Elasticsearchenvy666 回复了问题 • 2 人关注 • 1 个回复 • 307 次浏览 • 2021-11-04 08:49 • 来自相关话题

cat/indices 查看有nested对象的index文档数量有延迟

回复

ElasticsearchCharele 回复了问题 • 2 人关注 • 1 个回复 • 261 次浏览 • 2021-10-22 16:35 • 来自相关话题

es7.6副本越少检索速度越快

回复

Elasticsearchtongchuan1992 回复了问题 • 3 人关注 • 3 个回复 • 530 次浏览 • 2021-09-28 16:48 • 来自相关话题

关于elasticsearch 5.4版本高亮查询不生效的问题

回复

Elasticsearchtongchuan1992 回复了问题 • 2 人关注 • 1 个回复 • 432 次浏览 • 2021-08-22 14:51 • 来自相关话题

【年度盛会】Elastic 中国开发者大会 2021 八折购票火热进行中

活动liaosy 发表了文章 • 0 个评论 • 190 次浏览 • 2021-12-29 11:06 • 来自相关话题

【年度盛会】2021 Elastic 中国开发者大会,来自Elastic、阿里、腾讯、谷歌、字节等业界专家带来的干货分享,精彩内容不容错过,八折购票火热进行中(折扣码: 80OFF),扫码即可报名购票。  
开发者大会2021议题海报2_讲师.png
  【更多演讲嘉宾介绍】 https://conf.elasticsearch.cn/2021/speaker.html 【大会官网】 https://conf.elasticsearch.cn
【年度盛会】2021 Elastic 中国开发者大会,来自Elastic、阿里、腾讯、谷歌、字节等业界专家带来的干货分享,精彩内容不容错过,八折购票火热进行中(折扣码: 80OFF),扫码即可报名购票。  
开发者大会2021议题海报2_讲师.png
  【更多演讲嘉宾介绍】 https://conf.elasticsearch.cn/2021/speaker.html 【大会官网】 https://conf.elasticsearch.cn

【1月8日】Elastic 中国开发者大会 2021 日程新鲜出炉!福利票抢先购!

Elasticsearchliaosy 发表了文章 • 0 个评论 • 159 次浏览 • 2021-12-27 21:46 • 来自相关话题

重要的事情说三遍

  • Elastic 中国开发者大会 2021 的精彩日程现已上线!
  • Elastic 中国开发者大会 2021 的精彩日程现已上线!
  • Elastic 中国开发者大会 2021 的精彩日程现已上线!

关于本次大会

Elastic 中国开发者大会 2021 是由 Elastic 官方、Elastic 中文社区和极限科技联合主办的开发者大会,作为中国国内唯一一个专门讨论 Elasticsearch 开源技术的大会,是中国最权威和最具实力干货的技术大会,其专业性和内容的质量一直以来在业内都是有口皆碑。本次大会邀请的演讲嘉宾有来自 Elastic 官方、Google、腾讯、阿里巴巴、字节跳动、vivo等众多公司的技术专家,为中国广大的 Elasticsearch 开发者提供一个技术交流和学习切磋的地方,汇集业界众多的成功案例,集思广益,发散思维,促进社区和行业的进步。

更多详细介绍请参见大会官网:

https://conf.elasticsearch.cn

关于大会议程

开发者大会2021议程_8折.png

精彩内容不容错过,八折购票火热进行中(折扣码: 80OFF),扫码购买。

发布一个免费的 Elasticsearch 多集群监控和管理平台 - 极限数据平台

Elasticsearchmedcl 发表了文章 • 12 个评论 • 2014 次浏览 • 2021-11-22 18:48 • 来自相关话题

随着单个 Elasticsearch 集群规模的越来越大,大家要么在拆集群的路上,要么是已经是多套集群了, 据路边社消息,一个公司超过5个集群的情况已经变得非常普遍,而管理多个集群着实是有点痛苦,比如常规的玩法可能是一套集群一个 Kibana,集群一多,切换来切换去就有点懵圈了有木有?

fansile.gif

作为一个优雅的程序员或者运维管理员,是可忍孰不可忍啊。

另外,多个集群的监控也是一个麻烦事,目前常见的几种监控如:

  • 使用 Kibana 自带的监控
  • 使用 Prometheus + Grafana
  • 使用 Zabbix

Kibana 自带的监控可以很好的满足单个集群的监控场景,不过集群规模大了之后,经常会出现指标丢失的问题,如果使用单独的监控集群,需要修改每个节点的配置,集群都需要重启,对于已经上了生产的集群,有点不方便,另外多集群监控需要商业授权。

e82a31225ca28ed8029e0681f9346ee2.gif

那 Prometheus 呢, 一个 Elasticsearch 集群如果要监控起来,首先需要部署一个 Exporter 来暴露集群指标,然后部署一套Prometheus 来采集 Elasticsearch 指标,采集完了之后再部署一套 Grafana 来进行报表分析,不同的集群要做好切换,简单的事情,搞复杂了,整个监控体系偏重,维护成本高。

Zabbix 和 Prometheus 的场景差不多,就不赘述了。

530a83558eabaa4ae4eb25501349a7a3_16590_250_187.jpeg

那么问题来了,有没有一个更加简单方便的多集群监控和管理方案呢,并且要支持不同版本的集群,最好是 v2、v5、v6、v7 以及最新的 v8 都能统统接管,哈哈,没错了,这里给大家介绍一个我们极限实验室团队最近开发出来的一款免费的多集群监控和管理工具-极限数据平台,目前版本 v0.1,新鲜出炉。

废话不多少,咱们直接看图说话:

Jietu20211122-183111.jpg

首先是多集群的纳管,目前从 1.0 到最新的 8.0 统统都可以接进来。

Jietu20211122-183020.jpg

然后就是集群的监控拉,要多简单有多简单,就是一个开关的事情,注册集群的时候,启用即开启监控,目标集群啥都不用动,费那劲干啥。

监控界面如图:

Jietu20211122-183309.jpg

集群概览,总体情况一目了然。

Jietu20211122-183438.jpg

各个节点信息,分门别类。

Jietu20211122-183504.jpg

各个索引级别的信息,挨个查看。

Jietu20211122-183558.jpg

多个集群之间的监控查看一键切换,非常方便。

查看监控的时候,发现不对劲,要操作一下集群,直接调出控制台,如下图:

Jietu20211122-183717.jpg

常用的操作命令,可以保存起来,方便下次使用。

Jietu20211122-183815.jpg

别再保存在记事本里面了,下次又找不到,直接加载执行就好了。

Jietu20211122-183924.jpg

好了,你要是用 Elasticsearch 不知道这个工具,那就 out 了,赶快耍起来吧。

下载地址:

http://release.elasticsearch.cn/console/snapshot/

安装巨简单,简直懒得说,一个二进制可执行文件,一个 yml 配置文件,里面修改 Elasticsearch 地址,结束。

可以在这里查看 介绍和 Demo 演示视频

最后,欢迎关注极限实验室,获取更多 Elasticsearch 免费工具及业界资讯的第一手消息。

WechatIMG700.jpeg

极限网关入门视频教程已发布

Elasticsearchmedcl 发表了文章 • 4 个评论 • 319 次浏览 • 2021-11-21 11:41 • 来自相关话题

录制了一系列视频教程,介绍极限网关的使用,不断更新中,第一次做 up 主,记得一键三连,支持一下。:)      极限网关地址:https://极限网关.com
录制了一系列视频教程,介绍极限网关的使用,不断更新中,第一次做 up 主,记得一键三连,支持一下。:)      极限网关地址:https://极限网关.com

Elastic 中国开发者大会 2021 开启了,预热铁粉票已开抢,手慢无!

活动liaosy 发表了文章 • 0 个评论 • 475 次浏览 • 2021-11-11 17:45 • 来自相关话题

banner-1080x640-infini.png
Elastic 中国开发者大会 2021 是由 Elastic 官方、Elastic 中文社区和极限科技联合主办的开发者大会,作为中国国内唯一一个专门讨论 Elasticsearch 开源技术的大会,是中国最权威和最具实力干货的技术大会,其专业性和内容的质量一直以来在业内都是有口皆碑,大会最早发起于 2013 年初一个很小的线下聚会,之后每年迅速成长,往年大会的演讲嘉宾有来自 Elastic 官方、百度、腾讯、阿里巴巴、360、微博、美团、58、苏宁等众多公司的技术专家,带来过众多精彩的分享,与会听众大多为大数据领域相关的架构师、技术经理与一线开发工程师和运维工程师。 我们本着非盈利目的来举办大会,今年的大会将于2022年1月8号在深圳举行,举办开发者大会的目的是为中国广大的 Elasticsearch 开发者提供一个技术交流和学习切磋的地方,汇集业界众多的成功案例,集思广益,发散思维,促进社区和行业的进步。   大会官网:https://conf.elasticsearch.cn Elasticsearch铁粉福利: 预热-铁粉票(79元/张), 共计100张,数量有限,赶紧去报名抢购吧! 购票地址:https://www.bagevent.com/event/7899116   同时大会也在公开征集演讲议题与合作赞助商,欢迎各位Elastic相关技术大咖报名参与分享,欢迎有兴趣的赞助商金主大大前来合作。 演讲报名申请:http://elasticsearch.mikecrm.com/uXH61JL 赞助合作申请:http://elasticsearch.mikecrm.com/6LGkKK0    

给Zblogphp插上Elasticsearch的翅膀

Elasticsearch 发表了文章 • 0 个评论 • 383 次浏览 • 2021-10-11 23:00 • 来自相关话题

# 给Zblogphp插上Elasticsearch的翅膀 找遍了zblog的应用中心,未发现有使用Elasticsearch搜索引擎的插件。国庆闲来无事,根据zblogphp的机制,开发了一个基于Elasticsearch的插件。 本插件使用简单,需要有一个Elasticsearch7.x的环境(基于7.x版本开发),Elasticsearch 安装[IK](https://github.com/medcl/elasticsearch-analysis-ik)、[pinyin](https://github.com/medcl/elast ... pinyin),[中文简繁體转换](https://github.com/medcl/elast ... onvert) 插件。安装好该插件后,只需要配置好账号密码,点击创建索引模板即可。发布和编辑文章时,会自动根据索引模板,创建post索引,同步文章数据。搜索时,直接接管原有的搜索逻辑,无需调整程序和模板。 后台配置截图:
123.jpg
配置好连接,端口,账号和密码,点击“测试连接”,弹出连接成功,展示版本号,即可点击保存配置,如果这4项错误,连接不上Elasticsearch,获取不到ES的版本号,将无法保存配置。
Dingtalk_20211009115321.jpg
看到这个提示,便可以点击“保持配置”。这里有一项“切换搜索 Elasticsearch”,开启,前端搜索即切换到了Elastisearch搜索引擎。
234.jpg
在配置好了基本设置以后,点击索引模板,可以预览到索引模板,点击“创建索引模板”,即可在Elasticsearch服务器创建好索引模板,成功后,会在说明栏展示绿色的“已创建”,如果未创建,展示红色的“未创建”。发布和编辑文章时,会根据该索引模板,自动创建好索引,同步文章。 以下是搜索效果截图:
345.jpg

通过python脚本迁移ES的template模板

Elasticsearch 发表了文章 • 0 个评论 • 408 次浏览 • 2021-09-30 09:30 • 来自相关话题

通过python脚本迁移ES的template模板

通过python脚本迁移ES的template模板,从192.168.0.1 迁移到 192.168.0.2

import base64
import json

import requests

def putTemplate(templateName, templateDslJson):
    print("{0} 索引模板正在迁移中".format(templateName))

    res = requests.put("http://192.168.0.2:9200/_template/{0}".format(templateName), json=templateDslJson)
    print(res.status_code)
    print(res.content)

def getTemplateDslJson():
    username = "elastic"
    password = "123456"
    user_info_str = username + ":" + password
    user_info = base64.b64encode(user_info_str.encode())  # 这个得到是个字节类型的数据
    headers = {
        "Authorization": "Basic {0}".format(user_info.decode())  # 这个就是需要验证的信息
    }
    url = "http://192.168.0.1:9200/_template/*_template"
    res = requests.get(url, headers=headers)
    print(res.status_code)
    return json.loads(res.content)

if __name__ == '__main__':
    jsonTemplate = getTemplateDslJson()
    if isinstance(jsonTemplate, dict):
        for templateName in jsonTemplate:
            templateDslJson = jsonTemplate[templateName]
            putTemplate(templateName, templateDslJson)

Elastic日报 第1272期 (2021-07-08)

Elastic日报BKing 发表了文章 • 0 个评论 • 463 次浏览 • 2021-07-08 20:18 • 来自相关话题

1.Elastic Security 可防止 100% 的 REvil 勒索软件样本 https://www.elastic.co/cn/blog ... mples 2.Shard Math 在 Elasticsearch 中的重要性 https://bonsai.io/blog/the-imp ... -math 3.用 流式 ETL 对 AIS 数据进行分析 https://www.confluent.io/blog/ ... king/ 编辑:涌动同学 归档:https://ela.st/cn-daily-all 订阅:https://ela.st/cn-daily-sub 沙龙:https://ela.st/cn-meetup  

【杭州站】Elastic & 阿里云 Meetup 6月5号

活动liaosy 发表了文章 • 0 个评论 • 939 次浏览 • 2021-05-22 17:38 • 来自相关话题

banner

活动介绍

本次Meetup杭州站由阿里云和Elastic联合举办,邀请来自滴滴、安恒信息、阿里云的资深技术专家探讨在搜索、安全、内核优化等方向的实践与创新,以及发布由数十位优秀技术开发者共创而成的实战指南,共同分享 Elasticsearch技术大咖的一线经验与深度思考。

报名方式

链接:https://www.bagevent.com/event/7449056
扫码:
sign up

活动时间

2021年06月05日 13:00-17:30

活动地址

浙江省杭州市余杭区阿里巴巴西溪园区访客中心 206-S越秀书院

活动流程

13:00~13:15 签到入座
13:15~13:30 开发者共创书籍《Elastic Stack 实战手册V1.0》发布
13:30~14:30 滴滴Elasticsearch内核优化之路
            韩宝君 滴滴Elasticsearch资深开发工程师/ES社区Contributor
14:30~15:30 Elasticsearch在SIEM的应用与实践
            汤乐奇 安恒信息AiLPHA大数据资深研发经理
15:30~16:30 Elasticsearch Serverless 云原生时代的创新实践
            马华标(城破) 阿里巴巴高级技术专家/阿里云ES内核研发负责人
16:30~17:20 圆桌交流
17:20~17:30 抽奖合影

活动奖品

阿里云双肩包、T恤、Elastic定制礼物

阿里云ACE

阿里云ACE即全称 Alibaba Cloud Engineer,是意为阿里云的工程师、代表着云计算的建设者。同时“ACE”又是扑克牌中的“A”,因此阿里云ACE也寓意着是云计算领域王牌的一群人。在线上,ACE拥有专属的页面和29个社群,承载论坛及专栏等内容; 在线下,ACE通过组织丰富的活动,包括技术沙龙、TechDay、Meetup、官方互动等来形成本地化的开发者的学习、社交平台。

通过ACE组织的各种活动,ACE用户可以结识本地的开发者,收获前沿知识,积累行业经验,并加深对阿里云的了解。

活动交流及杭州ACE同城会钉群

DingTalk

活动海报

poster

2021 Elastic 中文社区深圳线下 Meetup 重磅重启,讲师招募进行中!

活动howardhuang 发表了文章 • 0 个评论 • 923 次浏览 • 2021-05-21 15:49 • 来自相关话题

各位社区的小伙伴们大家好!过去一年多以来,疫情阻挡了我们聚会的脚步,但阻挡不了我们 ES 技术演进的脚步,ES 中文社区前期持续举办了多期线上 meetup 活动,输出了多个高质量的技术主题分享。如今在深圳,线下 meetup 活动重磅重启!6月26日我们将在深圳腾讯滨海大厦多功能厅,和大家欢聚一堂,畅谈 ES 各个领域最新的黑科技。目前讲师招募持续进行中,欢迎各路大佬扫码报名!
Elastic_中文社区深圳_Meetup.jpg
活动链接:https://www.bagevent.com/event/7440283
各位社区的小伙伴们大家好!过去一年多以来,疫情阻挡了我们聚会的脚步,但阻挡不了我们 ES 技术演进的脚步,ES 中文社区前期持续举办了多期线上 meetup 活动,输出了多个高质量的技术主题分享。如今在深圳,线下 meetup 活动重磅重启!6月26日我们将在深圳腾讯滨海大厦多功能厅,和大家欢聚一堂,畅谈 ES 各个领域最新的黑科技。目前讲师招募持续进行中,欢迎各路大佬扫码报名!
Elastic_中文社区深圳_Meetup.jpg
活动链接:https://www.bagevent.com/event/7440283

ES 7.4.2的Sort Script查询性能比较差

Elasticsearchquan子里的世界 发表了文章 • 0 个评论 • 1694 次浏览 • 2021-01-19 14:15 • 来自相关话题

我们的es从5.3.2升级到7.4.1,遇到一个脚本的性能问题。同样的一段Sort Script脚本, 在ES 7.4.1的执行要比ES 5.3.2要慢至少一倍。一个主要的特点就是departure_city_ids可能会很多,通过doc获取一个deparature_city_ids的数据, 数据的大小最大的时候达到两千多个左右。Type为keyword类型。

  • 具体的sort script脚本实例已经贴在下面了。

脚本实例:

"sort": [
    {
      "_script": {
        "script": {
          "inline": "return doc['departure_city_ids'].size()",
          "lang": "painless"
        },
        "type": "number",
        "order": "desc"
      }
    }
  ]

https://discuss.elastic.co/t/the-performance-of-script-based-sorting-in-es-7-4-2-verison-is-very-poor/261241

极限网关 INFINI Gateway 初体验

Elasticsearchliaosy 发表了文章 • 3 个评论 • 3826 次浏览 • 2020-12-09 00:57 • 来自相关话题

最近在elasticsearch中文社区看到medcl大神写的一篇文章《Elasticsearch 极限网关测试版本发布》,在es外层接了一个极限网关gateway,所有的请求先走网关,再到es。gateway能提供索引级别的限速限流,降低重复请求,缓存常见查询,起到查询加速的效果等等很多特性。看着很强大的样子,赶紧下载体验了一下。 下载 下载地址:https://github.com/medcl/infini-gateway/releases 找到当前最新版1.1.0_SNAPSHOT
image_(1).png
根据自己的操作系统环境选择相应的包下载,本人用的是Macbook,选择了GATEWAY-darwin64.tar.gz
#切换该路径下(路径自定)
cd /Users/shiyang/code/elastic/gateway
#下载
wget https://github.com/medcl/infin ... ar.gz
#下载完后解压
tar -zxvf GATEWAY-darwin64.tar.gz
#解压后能看到两个新文件,一个可执行二进制文件,一个yml配置文件
ls
#gateway-darwin64   gateway.yml
安装部署 在run之前需要先运行elastisearch,否则会报错,如图所示:
image_(1).png
接下来先启动es集群(如果你本地还没有部署es,建议先参考官网的es安装教程下载部署) 本机用的es版本为7.9.0,如下图表示启动es成功:
image_(2).png
接下来再启动gateway,yml配置文件可以先默认,后续可根据需要再修改。
#启动 
./gateway-darwin64
启动成功如下图所示:
image_(3).png
成功启动后,我们就可以直接访问gateway了。
curl http://0.0.0.0:8000
image_(4).png
到此,gateway就算本地部署完毕了。 是不是很简单?嗯,下载即使用,简单方便。 (接下来可以试用一下gateway的特性了。将发布在下一篇文章。)

Elasticsearch索引拆分方案

Elasticsearch 发表了文章 • 0 个评论 • 4811 次浏览 • 2020-10-19 09:08 • 来自相关话题

Elasticsearch索引拆分方案

[TOC]

一、概况

项目中,由于Elasticsearch单个索引数据量大,索引中部分数据不常用,在搜索和写入文档时,效率较低。为了减小单个索引的数据量,提升搜索和文档写入效率,将大索引根据一定的规则拆分为小的索引。拆分索引的关键点在于建立索引,文档同步,多索引搜索。

建立索引的关键问题是索引的设置以及字段的属性设置,最常见的问题是,某个字段我们希望Elasticsearch 按照我们的想法进行分词。采用自动生成索引(默认模板),索引字段的类型就会根据第一条文档的数据进行字段转换,无法实现具体某个字段使用我们想要的分词方式。另外就是无法使用自定义分词器,索引的默认分片数为5,无法根据我们制定的分片数进行分配。

为了实现我们这种自动创建索引的特殊要求,Elasticsearch也提供了索引模板API。

索引模板,就是创建索引的模板,模板中包含公共的配置(Settings)和映射(Mappings),并包含一个简单触发条件,及条件满足时使用该模板创建一个新的索引。

模板只在创建索引时应用。更改模板不会对现有索引产生影响。当使用create index API时,作为create index调用的一部分定义的设置/映射将优先于模板中定义的任何匹配设置/映射。

文档同步和搜索,我们都采用了别名的形式。索引别名,就像一个快捷方式或软连接,可以指向一个或多个索引,也可以给任何一个需要索引名的API来使用,别名不能与索引具有相同的名称。别名带给我们极大的灵活性,允许我们在运行的集群中可以无缝的从一个索引切换到另一个索引,给多个索引分组 ,给索引的一个子集创建。因为使用别名,你的应用可以在零停机的情况下从旧索引迁移到新索引。

由于文档同步,必须指定一个唯一的索引才能成功。原来单索引时,我们的索引采取了 “索引名称_v1”的形式,为方便在零停机的情况下重建索引,文档更新也新建了一个专门的索引别名。 拆分索引后,索引名称规范为“索引名称_YYMM”按月拆分(包括但不限于此种方式),就会出现多个索引,此时就不在方便新增专门的索引别名用于文档更新,反而用索引名字直接进行文档更新,就会更加的方便,直接和准确。

文档同步使用索引名称,搜索依旧使用别名的形式。多个索引,有相同的别名,索引拆分,文档分属不同的索引,但因为有相同的别名,使用别名搜索时,依然可以将数据搜索出来。

通过建立索引,文档同步,多索引搜索实现了单索引到多索引的拆分。数据还是那些数据,依然能搜索出来,索引数变多了,每个索引的数据减少,同步文档速度就可以提高。搜索也可以根据业务需求只查询部分索引,提升了查询速度,也可以查询所有数据,根据实际场景可自由变换。

二、索引拆分规则

索引拆分,可以根据创建时间拆分,如:”索引名称_yyyyMM“,”索引名称_yyyy“;也可以根据主键ID求余的方式来进行拆分,如:”索引名称_0“,”索引名称_1“。

具体的拆分规则根据业务需要进行,需要注意的是,无论根据创建时间还是根据主键ID求余来拆分,都要求根据拆分的值,是文档中不变的值,才能唯一确定一个索引,进行文档的存储,如:主键ID,创建时间;不可为变化的值,有可能变化的值,就无法唯一确定一个索引进行文档存储,如:状态,那就会出现当前在这个索引,状态改变后再另外的索引,这样每个索引都有同一条状态不同的数据,搜索时就会不准确。

本文将根据创建时间进行索引拆分。

思路:

  • 创建索引模板
  • 同步文档时,选用的索引名称以"索引名称_yyyyMM"命名,自动创建带别名的索引
  • 如果文档同步到新索引,原索引中的文档需删除

三、创建索引模板

以商品评论索引为例,将单索引拆分为多索引,根据以下规则,在同步文档时,如果无索引会字段根据模板生成:

  • 索引名称的规则“goods_comment_202010”
  • 索引别名为“goods_comment”
  • number_of_shards分片数为3
  • 配置Settings
  • 定义Mappings字段及其类型

具体模板如下所示:

{
    "order" : 0,
    "index_patterns" : [
      "goods_comment*"
    ],
    "settings" : {
      "index" : {
        "max_result_window" : "100000",
        "analysis" : {
          "filter" : {
            "by_stop_filter" : {
              "type" : "stop",
              "stopwords" : [
                " "
              ]
            },
            "pinyin_first_letter_and_full_pinyin_filter" : {
              "keep_none_chinese_in_first_letter" : "true",
              "lowercase" : "true",
              "keep_original" : "true",
              "keep_first_letter" : "true",
              "trim_whitespace" : "true",
              "type" : "pinyin",
              "keep_none_chinese" : "true",
              "limit_first_letter_length" : "16",
              "keep_full_pinyin" : "true"
            },
            "by_synonym_filter" : {
              "type" : "synonym",
              "synonyms_path" : "analysis/synonym.txt"
            },
            "full_pinyin_filter" : {
              "keep_none_chinese_in_first_letter" : "true",
              "lowercase" : "true",
              "keep_original" : "true",
              "keep_first_letter" : "false",
              "trim_whitespace" : "true",
              "type" : "pinyin",
              "keep_none_chinese" : "true",
              "limit_first_letter_length" : "16",
              "keep_full_pinyin" : "true"
            }
          },
          "char_filter" : {
            "by_char_filter" : {
              "type" : "mapping",
              "mappings" : [
                "| => |"
              ]
            }
          },
          "analyzer" : {
            "by_max_word" : {
              "filter" : [
                "by_synonym_filter",
                "lowercase"
              ],
              "char_filter" : [
                "html_strip"
              ],
              "type" : "custom",
              "tokenizer" : "ik_max_word"
            }
          },
          "tokenizer" : {
            "my_pinyin" : {
              "lowercase" : "true",
              "keep_original" : "true",
              "remove_duplicated_term" : "true",
              "keep_separate_first_letter" : "false",
              "type" : "pinyin",
              "limit_first_letter_length" : "16",
              "keep_full_pinyin" : "true"
            }
          }
        },
        "number_of_shards" : "3",
        "number_of_replicas" : "1"
      }
    },
    "mappings" : {
      "_doc" : {
        "properties" : {
          "is_img" : {
            "type" : "integer"
          },
          "gid" : {
            "type" : "integer"
          },
          "pubtime" : {
            "type" : "integer"
          }
            ....
        }
      }
    },
    "aliases" : {
      "goods_comment" : { }
    }
  }

上述模板定义,看似复杂,拆分来看,主要为如下几个部分:

{
  "order": 0,                               // 模板优先级
  "index_patterns": ["goods_comment*"],// 模板匹配的名称方式
  "settings": {...},                        // 索引设置
  "mappings": {...},                        // 索引中各字段的映射定义
  "aliases": {...}                          // 索引的别名
}

3.1 模板优先级

有时候,一个模板可能绝大部分符合新建索引的需求,但是局部需要微调,此时,如果复制旧的模板,修改该模板后,成为一个新的索引模板即可达到我们的需求,但是这操作略显重复。此时,可以采用模板叠加与覆盖来操作。模板的优先级是通过模板中的 order 字段定义的,数字越大,优先级越高。 如下为定义所有以 te 开头的索引的模板:

{
    "order": 0,
    "index_patterns": "te*",
    "settings": {
        "number_of_shards": 1
    },
    "mappings": {
        "type1": {
            "_source": {
                "enabled": false
            }
        }
    }
}

索引模板是有序合并的。如何想单独修改某一小类索引的一两处单独设置,可以在累加一层模板。

{
    "order": 1,
    "index_patterns": "tete*",
    "settings": {
        "number_of_shards": 2
    },
    "mappings": {
        "type1": {
            "_all": {
                "enabled": false
            }
        }
    }
}

上述第一个模板的 order 为0,第二个模板的 order 为1,优先级高于第一个模板,其会覆盖第一个模板中的相同项。所以对于所有以 tete 开头的索引模板效果如下:

{
    "settings": {
        "number_of_shards": 2
    },
    "mappings": {
        "type1": {
            "_source": {
                "enabled": false
            },
            "_all": {
                "enabled": false
            }
        }
    }
}

两个模板叠加了,项目的字段,优先级高的覆盖了优先级低的,如分片数。

3.2 模板匹配的名称

索引模板中的 "index_patterns" 字段定义的是该索引模板所应用的索引情况。如 "index_patterns": "tete*" 所表示的含义是,当新建索引时,所有以 tete 开头的索引都会自动匹配到该索引模板。利用该模板进行相应的设置和字段添加等。

3.3 settings 部分

索引模板中的 settings 部分一般定义的是索引的主分片、拷贝分片、刷新时间、自定义分析器等。常见的 settings 部分结构如下:


"settings": {
    "index": {
      "analysis": {...},                // 自定义的分析器
      "number_of_shards": "32",         // 主分片的个数
      "number_of_replicas": "1",        // 主分片的拷贝分片个数
      "refresh_interval": "5s"          // 刷新时间
    }
  }

建立的索引,不会立马查到,这是为什么 Elasticsearch 为 near-real-time(接近实时)的原因,需要配置刷新时间,默认的是 1s。settings 的设置中,重点是自定义分析器的设置。

  • 分析器是三个顺序执行的组件的结合。他们分别是字符过滤器、分词器、标记过滤器。字符过滤器是让字符串在被分词前变得更加整洁。一个分析器可能包含零到多个字符过滤器(character_filter)。

  • 分词器将字符串分割成单独的词(terms)或标记(tokens)。一个分析器必须包含一个分词器。

  • 分词器分词的结果的标记流会根据各自的情况,传递给特定的标记过滤器。标记过滤器可能修改、添加或删除标记。

创建的创建自定义分析器结构如下:

"settings": {
    "index": {
      "analysis": {
            "char_filter": { ... },              // 用户自定义字符过滤器
            "tokenizer":   { ... },             // 用户自定义分词器
            "filter":      { ... },             // 用户自定义标记过滤器
            "analyzer":    { ... }              // 用户自定义分析器
      },
      ...
    }
  }

3.4 索引类型的字段映射

索引模板中,映射字段所对应的常用结构是:

"mappings": {
    "_doc": {                               // 索引下的类型 _doc 应用该映射
      "dynamic_templates": [ ... ],         // 动态映射部分,用于未定义的 my_type 下字段
      "properties": { ... }                 // 自定义字段的响应映射
    }
}

"_doc" 是索引下的一个类型,Elasticsearch 7.x仅支持"_doc"作为索引类型,Elasticsearch 6.x推荐使用"_doc"为索引类型。

动态映射

动态映射 "dynamic_templates" 字段对应的是一个数组,数组中的元素是一个个字段的映射模板。每个字段的映射模板都有一个名字用户描述这个模板的用途,一个 mapping 字段由于指明这个映射如何使用,和至少一个参数(例如 match)来定义这个模板适用于哪个字段。 dynamic_templates 字段对应的字段模板结构如下:

{
    "string_fields": {                                  // 字段映射模板的名称,一般为"类型_fields"的命名方式
        "match": "*",                                   // 匹配的字段名为所有
        "match_mapping_type": "string",                 // 限制匹配的字段类型,只能是 string 类型
        "mapping": { ... }                              // 字段的处理方式
 }

自定义字段映射

针对索引类型中存在的字段,除了可以采用动态模板的方式,还可以采用定义定义的方式,常见的自定义结构如下:

"mappings": {
    "my_type": {
      "dynamic_templates": [ ... ],
      "properties": {
          "user_city": {                                // 字段名
             "analyzer": "lowercase_analyzer",          // 字段分析器
             "index": "analyzed",                       // 字段索引方式定义索引
             "type": "string",                          // 字段数据类型定义为 string
             "fields": {                                // 定义一个名为 user_city.raw 的嵌入的不分析字段
                "raw": {
                    "ignore_above": 512,
                    "index": "not_analyzed",
                    "type": "string"
                }
            }
         },
         "money":{
            "type": "double",
            "doc_values": true
         }
         ...
      }
    }
}

3.5 别名

即使你认为现在的索引设计已经是完美的了,当你的应用在生产环境使用时,还是有可能在今后有一些改变的。所以请做好准备:在应用中使用别名而不是索引。然后你就可以在任何时候重建索引。别名的开销很小,应当广泛使用。利用索引别名,可以实现零停机时间重新索引。 定义方式如下:

{
  "order": 0,                               // 模板优先级
  "index_patterns": "goods_comment*",         // 模板匹配的名称方式
  "settings": {...},                        // 索引设置
  "mappings": {...},                        // 索引中各字段的映射定义
  "aliases": {
     "goods_comment":{}
  }
}

以上只是简单的介绍了索引模板和模板内的组成部分的介绍,详情请见Elasticsearch官方文档。

有了以上的知识,我们就可以利用索引模板的API,来对模板进行创建,查询,删除操作了。

3.6 索引模板管理

创建索引模板

PUT _template/goods_comment_template
{
  "order": 0,                               // 模板优先级
  "index_patterns": "goods_comment*",  // 模板匹配的名称方式
  "settings": {...},                        // 索引设置
  "mappings": {...},                        // 索引中各字段的映射定义
  "aliases": {
     "goods_comment":{}
  }
}

查看索引模板

GET _template                // 查看所有模板
GET _template/temp*          // 查看与通配符相匹配的模板
GET _template/temp1,temp2    // 查看多个模板
GET _template/shop_template  // 查看指定模板

判断模板是否存在

HEAD _template/shop_tem

结果: a) 如果存在, 响应结果是: 200 - OK b) 如果不存在, 响应结果是: 404 - Not Found

删除索引模板

DELETE _template/shop_template    // 删除上述创建的模板

如果模板不存在, 将抛出404 错误

四、同步文档,自动创建索引

前面创建了商品评论的索引模板(goods_comment_template),同步文档时,指定索引名称为“goods_comment_202010”,如果索引不存在,便会创建名为“goods_comment_202010”的索引,同时创建好“goods_comment”别名。索引的settings和mappings都会根据模板定义的规则生成好。索引创建成功,此时该索引便能正常使用啦。

商品评论业务中,同步文档是在代码中实现,需要根据商品评论的创建时间,以“goods_comment_yyyyMM”的形式获取完整的索引名称(如:goods_comment_202010),同步文档指定goods_comment_202010,即可将数据同步到该索引。

五、别名搜索

多个商品评论索引,每个索引都有“goods_comment“别名,使用别名进行搜索,便能从这多个索引中获取数据。

同理,其他业务索引实现搜索,都要求使用别名形式。

六、可能存在的问题点

索引创建后,并不是一成不变的,随着业务的发展,新增字段也是较常见的。原来单索引,新增一个字段,只需要在mappings新增字段,重建索引,迁移数据,切换别名即可。拆分后的多索引,工作量便会成被增加。

修改索引模板,只会对后续生成的索引有作用,之前生成的索引,如需调整,需要手动或者使用脚本的形式进行重建并迁移数据。

七、附录

demo演示,也是体验索引拆分的一个实现过程。

7.1 查询索引模板列表

查看ES中的所有索引模板列表

命令:

GET _cat/templates?v

结果:

name                                  index_patterns             order       version
kibana_index_template:.kibana         [.kibana]                  0           
.monitoring-kibana                    [.monitoring-kibana-6-*]   0           6050399
.management-beats                     [.management-beats]        0           67000

7.2 创建索引模板

命令:

PUT _template/demo_template
{
  "order": 0,
  "index_patterns": [
    "demo*"
  ],
  "settings": {
    "index": {
      "number_of_shards": 2,
      "number_of_replicas": 0,
      "max_result_window": 100000
    }
  },
  "aliases": {
    "demo": {}
  }
}

结果:

{
  "acknowledged" : true
}

7.3 查看索引模板详情

命令:

GET _template/demo_template

结果:

{
  "demo_template" : {
    "order" : 0,
    "index_patterns" : [
      "demo*"
    ],
    "settings" : {
      "index" : {
        "max_result_window" : "100000",
        "number_of_shards" : "2",
        "number_of_replicas" : "0"
      }
    },
    "mappings" : { },
    "aliases" : {
      "demo" : { }
    }
  }
}

7.4 查询索引数据

命令:

GET demo_v1/_search

结果:

{
  "error" : {
    "root_cause" : [
      {
        "type" : "index_not_found_exception",
        "reason" : "no such index",
        "resource.type" : "index_or_alias",
        "resource.id" : "demo_v1",
        "index_uuid" : "_na_",
        "index" : "demo_v1"
      }
    ],
    "type" : "index_not_found_exception",
    "reason" : "no such index",
    "resource.type" : "index_or_alias",
    "resource.id" : "demo_v1",
    "index_uuid" : "_na_",
    "index" : "demo_v1"
  },
  "status" : 404
}

7.5 创建文档

在此之前demo_v1索引不存在,通过创建文档,自动生成索引,新创建的demo_v1将根据demo_template索引模板生成。

命令:

POST demo_v1/_doc
{
  "id": 1,
  "title": "这是一条数据"
}

结果:

{
  "_index" : "demo_v1",
  "_type" : "_doc",
  "_id" : "20upIHUBO6Fj2CIJUFPr",
  "_version" : 1,
  "result" : "created",
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 0,
  "_primary_term" : 1
}

查看数据

GET demo_v1/_search 用索引名称进行查询
GET demo/_search 用别名进行查询
{
  "took" : 0,
  "timed_out" : false,
  "_shards" : {
    "total" : 2,
    "successful" : 2,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 1,
    "max_score" : 1.0,
    "hits" : [
      {
        "_index" : "demo_v1",
        "_type" : "_doc",
        "_id" : "20upIHUBO6Fj2CIJUFPr",
        "_score" : 1.0,
        "_source" : {
          "id" : 1,
          "title" : "这是一条数据"
        }
      }
    ]
  }
}

发现使用索引名称和别名都能搜索出来。但是我们并未单独创建索引别名。我们来查看一下demo_v1索引的结构。

GET demo_v1
{
  "demo_v1" : {
    "aliases" : {
      "demo" : { }
    },
    "mappings" : {
      "_doc" : {
        "properties" : {
          "id" : {
            "type" : "long"
          },
          "title" : {
            "type" : "text",
            "fields" : {
              "keyword" : {
                "type" : "keyword",
                "ignore_above" : 256
              }
            }
          }
        }
      }
    },
    "settings" : {
      "index" : {
        "number_of_shards" : "2",
        "provided_name" : "demo_v1",
        "max_result_window" : "100000",
        "creation_date" : "1602570768526",
        "number_of_replicas" : "0",
        "uuid" : "WrXtDB5eRzmU-xX1vAUCrA",
        "version" : {
          "created" : "6070099"
        }
      }
    }
  }
}

我们可以看到,demo_v1 索引中的数据:

  • 分片数(number_of_shards): 2
  • 副本(number_of_replicas): 0
  • 别名(aliases):demo
  • 最大结果窗口(max_result_window):100000

这些都是我们在demo_template模板中设置的,在自动创建索引时,根据索引模板的index_patterns值,只要我们的索引名称是以“demo”为前缀,都会根据该模板生成索引。因此,无论是demo_v1,还是demo_v2,只要是以“demo”为前缀,直接创建文档,如果不存在索引,ES也会自动给我们创建以“demo_template”为模板的索引。实现索引拆分最关键的点,就在于索引模板。

同样,我们通过创建文档,来生成一个没有索引模板的索引进行对比。

查询demo

GET demo/_search

确定demo索引不存在

{
  "error" : {
    "root_cause" : [
      {
        "type" : "index_not_found_exception",
        "reason" : "no such index",
        "resource.type" : "index_or_alias",
        "resource.id" : "demo",
        "index_uuid" : "_na_",
        "index" : "demo"
      }
    ],
    "type" : "index_not_found_exception",
    "reason" : "no such index",
    "resource.type" : "index_or_alias",
    "resource.id" : "demo",
    "index_uuid" : "_na_",
    "index" : "demo"
  },
  "status" : 404
}

创建一条文档

POST demo/_doc
{
  "id": 1,
  "title": "这是一条数据"
}

创建成功

{
  "_index" : "demo",
  "_type" : "_doc",
  "_id" : "PmXEIHUBwM4PCvJbG7Xw",
  "_version" : 1,
  "result" : "created",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 0,
  "_primary_term" : 1
}

查看数据

GET demo/_search
{
  "took" : 1,
  "timed_out" : false,
  "_shards" : {
    "total" : 2,
    "successful" : 2,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 1,
    "max_score" : 1.0,
    "hits" : [
      {
        "_index" : "demo",
        "_type" : "_doc",
        "_id" : "PmXEIHUBwM4PCvJbG7Xw",
        "_score" : 1.0,
        "_source" : {
          "id" : 1,
          "title" : "这是一条数据"
        }
      }
    ]
  }
}

数据同步成功,索引也因此创建完成,我们来看看这个索引结构

GET demo
{
  "demo" : {
    "aliases" : { },
    "mappings" : {
      "_doc" : {
        "properties" : {
          "id" : {
            "type" : "long"
          },
          "title" : {
            "type" : "text",
            "fields" : {
              "keyword" : {
                "type" : "keyword",
                "ignore_above" : 256
              }
            }
          }
        }
      }
    },
    "settings" : {
      "index" : {
        "number_of_shards" : "2",
        "provided_name" : "demo",
        "creation_date" : "1602572524390",
        "number_of_replicas" : "1",
        "uuid" : "p8kNddGzQzWOaz5xLcSWhA",
        "version" : {
          "created" : "6070099"
        }
      }
    }
  }
}

我们可以看到,demo索引中的数据:

  • 分片数(number_of_shards): 2
  • 副本(number_of_replicas): 1
  • 别名(aliases):无
  • 最大结果窗口(max_result_window):无

为了直观比较,请看下表:

有索引模板(demo_v1) 无索引模板(demo)
number_of_shards 2 2
number_of_replicas 0 1
aliases demo
max_result_window 10w 无,默认是1w

上表可知,通过索引模板的创建的索引,有利于我们更好的掌控索引的结构。

通过demo演示,我们可以进一步的理解索引拆分的一个过程及其实现原理,重点在索引模板。

八、参考

训练营报名中 | 5天突破Elasticsearch全观测日志分析能力

Elasticsearchzengcici 发表了文章 • 0 个评论 • 1196 次浏览 • 2020-09-08 11:43 • 来自相关话题

报名时间:截止 2020年9月13日 23:59分 报名链接:https://developer.aliyun.com/learning/trainingcamp/es/1?spm=a2c6h.17708739.J_1655470630.1.20d5624dXGy59Z

训练营介绍

Elastic.png

奖品介绍

礼品-Elastic版.png

云栖大会 | Elasticsearch 场景化应用专场,将于2020年9月18日 下午13:00开始,如果你不想错过,马上订阅吧 https://yunqi.aliyun.com/2020/session55?dtrid=6bW7hKei95

更多Elasticsearch 场景化应用,请下载白皮书【Elasticsearch 八大经典应用】 下载链接:https://files.alicdn.com/tpsservice/d95297082f35355f91528a2020afd926.pdf

报名时间:截止 2020年9月13日 23:59分 报名链接:https://developer.aliyun.com/learning/trainingcamp/es/1?spm=a2c6h.17708739.J_1655470630.1.20d5624dXGy59Z

训练营介绍

Elastic.png

奖品介绍

礼品-Elastic版.png

云栖大会 | Elasticsearch 场景化应用专场,将于2020年9月18日 下午13:00开始,如果你不想错过,马上订阅吧 https://yunqi.aliyun.com/2020/session55?dtrid=6bW7hKei95

更多Elasticsearch 场景化应用,请下载白皮书【Elasticsearch 八大经典应用】 下载链接:https://files.alicdn.com/tpsservice/d95297082f35355f91528a2020afd926.pdf

1.ES之从零开始 | 搜索建议 - 简介

ElasticsearchRicky_Lau 发表了文章 • 0 个评论 • 3015 次浏览 • 2020-07-22 18:59 • 来自相关话题

1.ES之从零开始 | 搜索建议 - 简介

自从个人博客数据意外丢失后,已经有一年没写过博客了。 觉得地下有点凉,是时候爬起来了,所以就有了这个系列的分享。

为什么要用搜索建议 ?

通过两个小例子,了解搜索建议主要功能:纠错(Did You Mean)和补全(Auto-complete).

  1. 手残党,有些时间在输入比较长的英文单词的时候总会有缺胳膊少腿的问题,是否可以通过技术来解决这类问题提升用户的体验?
  2. 公司里业务开发对Elasticsearch的query DSL 不是特别熟悉,若是纯手写,基本是无法完成正确查询语法的编写 ,但如果使用kibna却是可以写出正确的查询的。

相信通过上面两个例子,都了解了搜索建议的两个主要功能纠错和补全,为什么要使用也就迎刃而解了。 接下来,主要从技术和落地的维度来聊一聊搜索建议。

搜索建议的技术架构

  • 纠错(Did You Mean)
    1. 用户在搜索框中输入有问题的词,elastisearch(少了个字母c )
    2. 由于少了个字母,倒排表里未找到相应的文档,所以返回的命中结果为0.
    3. 因为命中0结果,发送一个纠错请求,希望通过增加、删除、替换一个字符来取得一个系统里存在的词。
    4. 把纠错后的词发送到客户端
    5. 获取系统中存在的,最可能的纠错词。
    6. 选择正确的纠错词发送查询请求
    7. 返回希望的检索结果。
  • 补全(Auto-Complete)
    1. 用户输入第一个字符
    2. 异步发送第一个字符尝试进行前缀补全
    3. 返回前缀被全词, 相同前缀的根据权重排序返回
    4. 选择下拉正确的补全词
    5. 根据正确的词,发送检索请求
    6. 返回期望的查询结果。

小结

  • 纠错可以解决小范围输错的问题,增加容错率来提升用户体验。
  • 补全,可以有效的减少用户输入,提升搜索的准确率。