随笔分类 - Scala
JVM编程语言
摘要:akka-typed中已经没有PersistentActor了。取而代之的是带有EventSourcedBehavior的actor,也就是一种专门支持EventSource模式的actor。EventSource的原理和作用在之前的博客里已经有了比较详细的介绍,这里就不再重复了。本篇直接从Even
阅读全文
摘要:akka系统是一个分布式的消息驱动系统。akka应用由一群负责不同运算工作的actor组成,每个actor都是被动等待外界的某种消息来驱动自己的作业。所以,通俗点描述:akka应用就是一群actor相互之间发送消息的系统,每个actor接收到消息后开始自己负责的工作。对于akka-typed来说,t
阅读全文
摘要:akka-typed的actor从创建、启用、状态转换、停用、监视等生命周期管理方式和akka-classic还是有一定的不同之处。这篇我们就介绍一下akka-typed的actor生命周期管理。 每一种actor都是通过定义它的行为属性behavior形成模版,然后由对上一层的父辈actor用sp
阅读全文
摘要:akka 2.6.x正式发布以来已经有好一段时间了。核心变化是typed-actor的正式启用,当然persistence,cluster等模块也有较大变化。一开始从名称估摸就是把传统any类型的消息改成强类型消息,所以想拖一段时间看看到底能对我们现有基于akka-classic的应用软件有什么深层
阅读全文
摘要:从SQL领域来的用户,对于ES的文件关系维护方式会感到很不习惯。毕竟,ES是分布式数据库只能高效处理独个扁平类型文件,无法支持关系式数据库那样的文件拼接。但是,任何数据库应用都无法避免树型文件关系,因为这是业务模式需要的表现形式。在ES里,无论nested或join类型的数据,父-子关系的数据文件实
阅读全文
摘要:聚合结果buckets默认以doc_count 排序方式呈现,即: _count asc 表达。其它还有 _term, _key 为排序控制元素。_key适用于histogram,date_histogram,如下: POST /cartxns/_search { "aggs": { "colors
阅读全文
摘要:聚合一般作用在query范围内。不带query的aggregation请求实际上是在match_all{}查询范围内进行统计的: GET /cartxns/_search { "aggs": { "all_colors": { "terms": {"field" : "color.keyword"}
阅读全文
摘要:在聚合的分组统计中我们会面临两种分组元素类型:连续型如时间,自然数等、离散型如地点、产品等。离散型数据本身就代表不同的组别,但连续型数据则需要手工按等长间隔进行切分了。下面是一个按价钱段聚合的例子: POST /cartxns/_search { "size" : 1, "aggs": { "sal
阅读全文
摘要:这篇我们介绍一下ES的聚合功能(aggregation)。聚合是把索引数据可视化处理成可读有用数据的主要工具。聚合由bucket桶和metrics度量两部分组成。 所谓bucket就是SQL的GROUPBY,如下: GET /cartxns/_search { "size" : 2, "aggs":
阅读全文
摘要:很多时候搜索用户对查询语句具有模糊感觉,他们只能提供大约的描述。比如一个语句的部分,或者字句顺序颠倒等。通过模糊查询可以帮助用户更准确的找出他们希望搜索的结果。 模糊查询包括前后缀,语句(phrase)查询。前缀查询在非文本查询和全文查询字段中使用是有着不同的效果:在非文本字段查询中我们需要严格按照
阅读全文
摘要:在全文搜索中我们常常会在多个字段中匹配同一个查询条件或者在不同的字段中匹配不同的条件。比如下面这个例子: GET /books/_search { "query": { "bool": { "should": [ { "match": { "title": "和平战争" }}, { "match":
阅读全文
摘要:前面写了个cassandra-appender,一个基于cassandra的logback插件。正是cassandra的分布式数据库属性才合适作为akka-cluster-sharding分布式应用的logger。所以,cassandra-appender核心功能就是对logback消息的存写部分了
阅读全文
摘要:上篇提过query模式除对记录的筛选之外还对符合条件的记录进行了评分,即与条件的相似匹配程度。我们把评分放在后面的博文中讨论,这篇我们只介绍query查询。 查询可以分为绝对值查询和全文查询:绝对值查询是指非text类型字段的查询,全文查询一般指对于text字段的查询。如果需要对text字段进行绝对
阅读全文
摘要:现在我们可以开始探讨ES的核心环节:搜索search了。search又分filter,query两种模式。filter模式即筛选模式:将符合筛选条件的记录作为结果找出来。query模式则分两个步骤:先筛选,然后对每条符合条件记录进行相似度计算。就是多了个评分过程。如果我们首先要实现传统数据库的查询功
阅读全文
摘要:如果我们把ES作为某种数据库来使用的话,必须熟练掌握ES的CRUD操作。在这之前先更正一下上篇中关于检查索引是否存在的方法:elastic4s的具体调用如下: //删除索引 val rspExists = client.execute(indexExists("company")).await if
阅读全文
摘要:按照计划,这篇开始尝试用elastic4s来做一系列索引管理和搜索操作示范。前面提过,elastic4s的主要功能之一是通过组合Dsl语句形成json请求。那么我们先试试组合一些Dsl语句,再想办法产生出json请求文本,然后在kibana控制台中验证它的正确性。 首先看看elastic4s提供的一
阅读全文
摘要:上次分析了一下elastic4s的运算框架。本来计划接着开始实质的函数调用示范,不过看过了Elastic4s的所有使用说明文档后感觉还是走的快了一点。主要原因是elasticsearch在7.0后有了很多重点调整改变,elastic4s虽然一直在源代码方面紧跟ES的变化,但使用文件却一直未能更新,所
阅读全文
摘要:elastic4s是elasticsearch一个第三方开发的scala语言终端工具库(Elastic4s is a concise, idiomatic, reactive, type safe Scala client for Elasticsearch.)。scala用户可以用elastic4
阅读全文
摘要:上篇谈到:elasticsearch本身是一个完整的后台系统,对其的操作使用是通过终端api进行的。elasticsearch本身提供了多种编程语言的api,包括java的esjava。而elastic4s是一套基于esjava之上的scala api。 先看看scala 终端 ElasticCli
阅读全文
摘要:上篇提到选择了elasticsearch ES作为专业化搜索引擎的核心,这篇讨论一下ES的基本结构和应用概念。首先,从硬结构方面来讲:ES是在一个集群(cluster)环境里运行的,所以ES应该具备高可用和高扩展特性,因为系统可以分布在机器内无数个节点(node)服务器上运行。ES的索引(index
阅读全文

浙公网安备 33010602011771号