ES的基础概念 Near Realtime(NRT) 近实时,ES是一个近实时的搜索服务。数据提交索引之后可以立即搜索到。为什么近实时可参考下文中的ES索引文档过程。
Cluster 集群。一个集群由一个唯一的名字标识,默认为"elasticsearch".集群名称非常重要,具有相同集群名称的节点才能组成一个集群。集群名称在配置文件中指定。
Node 节点。存储集群的数据,参与集群的索引和搜索功能。节点有自己的名称,启动时会以一个随机的UUID的前七个字符作为节点的名字,也可以指定任意的名字。通过集群名在网络中发现同伴组成集群。一个节点也可是集群。
Index 索引。 一个索引是一个文档的集合。每个索引有唯一的名字,通过这个名字来操作它。一个集群中可以有任意多个索引。
Type 类型。指在一个索引中,可以索引不同类型的文档,如用户数据、博客数据。从6.0.0 版本起已废弃,一个索引中只存放一类数据
Document 文档。被索引的一条数据,索引的基本信息单元,以JSON格式来表示。
Shard 分片。在创建一个索引时可以指定分成多少个分片来存储。每个分片本身也是一个功能完善且独立的“索引”,可以被放置在集群的任意节点上。Shard本质上是一个Lucene Index。每个shard都存在至少一个副本,并且不会存放在同一个节点呢。这样不仅可以加快查询时的速度及提高吞吐量,同时也可以天然的支持分布式。
Segments. Shard中包含了很多的Segments。ES的底层数据结构就保存在Segments中。比如,倒排索引(Inverted Index), Stored Fields, Document Values, Cache。
Replication 备份: 一个分片可以有多个备份(副本)
ES的底层实现Luence, 倒排索引(Inverted Index) 一个有序的数据字典Dictionary(包括单词Term和它出现的频率)
与单词Term对应的Postings(即存在这个单词的文件)
es索引文档过程 es节点写入请求过程。write→refresh→flush→merge...
2022年2月12日
非凡足迹与您相约临安第一峰窑头山
让我们一起跟随非凡足迹
赴一场冬日里的浪漫徒步 活动报名链接
天目山脉向东延伸,在余杭与临安、安吉交界之处,坐落着余杭的第一高峰——窑头山。这里是天目山脉东端的主峰,也是太湖的重要源头之一。
窑头山海拔1095米,放眼杭州都是数一数二的高峰。上山之道沿途山涧高低曲折,绵延十余里,野趣横生。
窑头山顶平台空间较小,却有无限风光。若你是登山发烧友,一定要来试试。
走在布满青苔的山路,听着瀑布落水声,看山沟里的细水长流,走过小径,听看竹林里的落花、流水…站在青山瀑布前,犹如置身于故人的诗句里。
我们已为你提前探路,雪中徒步,体验下雪山飞狐的感觉。临安今天大雪,让雪来的更猛烈些吧
近期在v2ex有用户说马斯克开价5k刀让美国一少年不在twitter上爆料他的行程,但是该少年没有接受,并试图让马斯克提高价格到5W刀,当时就大概看了两眼就过去了。这两天在github上看到了一个开源的工程(plane-notify),大概就是这个少年开源的,工程的作用就是追踪某个飞机的行程,并自动发布到twitter等公开媒体上。
开始的时候有点差异,这个只是追踪某个航班的信息,怎么能知道马斯克的个人行程的。能知道马斯克坐那个航班我还需要这个玩意?后面一想,奥,马斯克一般做的是私人飞机啊,这玩意又不长换,追踪它的私人飞机飞那里,可不就知道他行程了。
今天有空把代码拉下来看了下,按照README运行了下。反正一直就是在不断的刷着各种颜色条,跑了一会感觉不对,这玩意像是没有结果了。
异常运行结果
后续又看了下README,发现这个ICAO需要自己重新设定的,原来的那个是随便搞的,肯定是什么信息也查不出来,所以才一直这种绿红的色条一直不断出现,而没有什么实质性的信息出来。
google查了一下这个ICAO,结果倒是很明确,就是飞机的一个唯一应答码/标示码。但是找遍了半天也没找到一个有效的ICAO。主要是也没有现成的例子。在各种飞行网站中找了半天现在还在天上的飞机,也是没找到这玩意。又尝试了几次,终于是有点眉目了,就是过程有点搞。找ICAO的步骤如下:
到FlightAware网站上根据起飞地和目的地找对应的还在天上飞的航班。然后根据航班获取相应的航空公司和机型数据。
航空公司及其相应机型数据
到民航休闲小站中找各个航空公司目前所有的飞机型号及其对应的注册号。
吉祥航空所有飞机型号及其对应注册号
根据注册号到网站Aircraft查询其响应的ICAO。⚠️这个网站是要注册才能查询的。
根据注册号获取ICAO
上面的1,2两步其实都可以在FlightAware完成,直接获取注册号。不过这个需要充值FlightAware会员,为了省钱,我们还是麻烦点吧。 将第三步我们拿到的ICAO替换到原来的值后,重新运行。日志终于打出了相应的航班信息,并最终生成了一张行程图。但是有点奇怪的是,怎么起飞地是赫尔辛基。我搜索的航班明明是上海虹桥到三亚啊?
最终生成的奇怪的行程图
春节期间没回老家,呆在上海实在无聊。昨天已经在家闷坐了一天,今天想了想还是要出去晃一圈。旁边很多地方都已经去过很多次了,看了看地图,近处没去过的也就是杨浦的市光-新江湾城片区了,今天就在那片晃一晃了。
先去的是市光这个区域,这个地方是听说过,但从来没去过的地。城市节目比较老,旁边只有偶尔几个看起来比较漂亮的楼盘,矗立在一大帮的老破小旁边可以说是鹤立鸡群。这一块临街的商铺比较多,商业看起来比较发达,大概是旁边的租金比较友好。不过是过年期间,商铺大多数是不开业的,所以也就没那么热闹,只有几个商场之类的还开着,人气也就那样吧。
我走的这条路叫包头路,刚走的时候还在和我老婆说我们这是到了内蒙古啊。走着走着旁边出现了一个安答火锅的店,也算是呼应了包头路这个称呼。毕竟安答这个称呼咱也就知道郭靖和托雷用过,他俩可是妥妥的蒙古大草原长大的。
包头路快到殷行路的地方有一个工农公园,听着名字应该是建国后不久起的名字。公园门口有各种奇怪的动物骨骼制品,咱认识的也就一个牛角梳子,依稀看到的还有一个熊爪子,旁边还围了不少的人。公园里大妈们放着音乐,跳着老年迪斯科。格调还挺好的,我都有点想跳起来。 市光走完顺着殷行路向新江湾城走去,走到一半有点累了。骑辆小单车继续,中途大概在政悦路附近,旁边有个小公园,里面的景色实在吸引人,本想进去探索一番的,奈何太太今天已经走太多了,只能放弃,留待下次了。
新江湾城的城市界面相比于市光那简直高的不是一星半点,从市光出来,越靠近新江湾城,城市界面就越好。到了新江湾城的核心之后,城市街区感觉都有点想迪士尼小镇了。不过,童话的世界代价当然不会那么便宜,随便看了看旁边房子的价格,就没几个低于1000W的,大部分都是在1500W往上的。
这边的道路绿化及河道也是盛于上海其他地方,也不知道怎么形容,就是看起来就让人感觉舒服,这还是在冬天。要是春天来,河流及街道两边都盛开鲜花,那一定是更美了。
新江湾城的河道都比其他地方清澈了许多
新江湾城普通桥梁及其河道远方
城市界面是好了,但是显然人气差了好多,走了几条街道就没遇到几个人。旁边也没几个店铺,走到这里就差不多中午了。点评上找了几个馆子,线下一看全部都关门回家了。好不容易找到一家店铺,在里面草草解决了午饭,就回去了。
最近闲逛github时看到一个有趣的项目,running_page,可以自动搭建个人运动记录的网站。大概看了下,过程还是很容易的,就是支持的app不多。自己运动的记录还是很多的,一直也想有记录的想法,正好趁着过年比较空,就搭建一下。
对比了下runing_page支持的几个app,最终选择了keep。昨天逛复兴岛的时候尝试了下keep的行走模式,用起来还是很舒服的,最终生成了一个5公里的行走记录。
搭建的过程主要就是按照README进行的,官方的建议是使用公共的静态站点服务搭建。咱自己有nas也不想让别人保存自己的隐私数据,所有最终目的就是把这个项目部署到自己的nas上。
开始是打算部署在nas上的docker中的,找了一个alpine镜像,启动后按照README开始安装python,以及yarn,但是最终在安装nodejs相关依赖时失败了。没办法,又找了个nodejs的镜像,哪知道又在安装python的依赖时失败了,也是没谁了。
没法子,现在自己的mac上试试了。mac上倒是没啥问题,顺利的yarn带来,访问到了本地页面。但是仔细一看,这还是人家自己的样例页面。又根据教程,清除了本地的运动记录。然后开始下载keep的运动记录。一下载就发现问题了,我明明昨天有5公里的行走记录,怎么显示没有相关记录呢?
后面又看了看项目介绍,人家记录的是跑步记录,咱这是行走记录,当然是下载不下来了。看看了代码中的接口,也是大方的写着runing。去官方翻了翻,发现人家没有公开的api接口,这个接口估计也是抓包弄出来的。
开启proxyman,抓了下keep的包。倒是很容易,行走记录的关键词是hiking。替换了代码中的runing,重新执行,昨天的记录被完美拉拉下来。重新打包编译,终于页面上显示了我自己的运动记录。
个人运动记录网站
本地的运行是解决了,下面要考虑的就是nas上怎么跑了。docker上不能动,就只能考虑虚拟机了。还好咱有现成的。unbuntu上安装python及其以来倒是很容易的。但是nodejs就有点麻烦。running_page这个工程支持的nodejs版本是12-16之间,通过apt安装的node版本要么太新,要么太老。其他方式又太麻烦。
还好有nvm这个利器,ubuntu上安装一个命令行就可以解决。管理各个版本的node也是非常容易。弄完它之后,running_page算是顺利的在虚拟机上跑起来了。
配上nginx,加上cloudflare上dns解析,我的个人运动记录网站算是完美搭建起来了。欢迎大家来参观 Jiang Bo Hiking Page