前面写了个cassandra-appender,一个基于cassandra的logback插件。正是cassandra的分布式数据库属性才合适作为akka-cl...
而elastic4s是一套基于esjava之上的scala api。...而elastic4s的具体操作是通过RestClient.performRequestAsync进行的,如下: public class RestClient implements Closeable...1234, Some("/prefix/path")), ElasticNodeEndpoint("https", "host2", 2345, Some("/prefix/path")))) } 当elastic4s...elastic4s提供了一套DSL, 一种嵌入式语言,可以帮助用户更方便的用编程模式来组合ES的指令Json。当然,用户也可以直接把字符类的Json直接通过ElasticClient发送到后台ES。...下面是一个简单可以运行的elastic4s示范: import com.sksamuel.elastic4s.http.JavaClient import com.sksamuel.elastic4s.requests.common.RefreshPolicy
上次分析了一下elastic4s的运算框架。本来计划接着开始实质的函数调用示范,不过看过了Elastic4s的所有使用说明文档后感觉还是走的快了一点。...主要原因是elasticsearch在7.0后有了很多重点调整改变,elastic4s虽然一直在源代码方面紧跟ES的变化,但使用文件却一直未能更新,所以从说明文档中学习elastic4s的使用方法是不可能的...实际上elastic4s的编程模式和scala语言运用还是值得学习的。...既然这样,我想可能用elastic4s做一套完整的示范,包括:索引创建、索引维护、搜索、聚合统计等,对了解和掌握elastic4s可能大有帮助。...在这之前,我们还是再回顾一下elastic4s的运算原理:elastic4s的功能其实很简单:通过dsl语句组合产生json请求,然后发送给ES-rest终端, 对返回的json结果进行处理,筛选出目标答案
按照计划,这篇开始尝试用elastic4s来做一系列索引管理和搜索操作示范。前面提过,elastic4s的主要功能之一是通过组合Dsl语句形成json请求。...首先看看elastic4s提供的一个show函数: def show(implicit handler: Handler[T, _]): String = Show[ElasticRequest...与ES7.6还有很多不兼容的地方,或者说是elastic4s还有许多没来得及更新的地方。...具体有问题的语句或参数都可以通过把json body放在kibana里进行验证,如果elastic4s还有地方没有完成覆盖ES7.6功能的话,我们可以把一个正确的ES7.6 json脚本直接通过source...elastic4s ExistApi还是ES7以前版本,不能用 3、client.execute(...)返回Future, 为什么不用for-yield?
elastic4s是elasticsearch一个第三方开发的scala语言终端工具库(Elastic4s is a concise, idiomatic, reactive, type safe...scala用户可以用elastic4s提供的DSL用编程代码形式来构建ES服务请求。与字符型json文本直接编写请求不同的是:在编译DSL编写的ES服务请求时可以发现无论是语法上或者语意上的错误。...一般来讲:elastic4s的程序流程相对直接、简单,如下: client.execute { indexInto("books" ).fields("title" -> "重庆火锅的十种吃法...def search(index: String): SearchRequest 实际上execute(T)的T代表elastic4s支持的所有ES操作类型。...elastic4s在各种操作类型的服务请求类型如IndexRequest, SearchRequest,BulkRequest等提供了source:Option[String]字段接收json文本,如下
}, { "key" : "red", "doc_count" : 4 } ] } } elastic4s...2014-09-01", "key" : 1409529600000, "doc_count" : 0 } ] } } elastic4s...elastic4s示范: val aggAvg = search("cartxns").aggregations( termsAggregation("makes") .field...elastic4s示范: val aggStats = search("cartxns").aggregations( termsAggregation("makes") .field..."lower" : 9000.0 } } } } ] } } elastic4s
"total sales" : { "value" : 80000.0 } } ] } } 在elastic4s...}, "min price" : { "value" : 80000.0 } } ] } } elastic4s...elastic4s示范: val aggDateHist = search("cartxns").aggregations( dateHistogramAggregation("sales_per_month...}, "total_sum" : { "value" : 40000.0 } } ] } } 用elastic4s
: { "value" : 26500.0 } }, "avg_ford" : { "value" : 27500.0 } } 用elastic4s...sales_this_month" : { "doc_count" : 1, "month_total" : { "value" : 10000.0 } } } elastic4s...elastic4s示范代码: val aggPost = search("cartxns").query( matchQuery("make.keyword","ford") ).postFilter
.*" } } } elastic4s的表达形式如下: val qTerm = search("bank").query(termQuery("state.keyword","IL"))...state.keyword": ["IL","WA","TA"] }}, { "range": { "balance": { "gte": 100000 }}} ] } } } 在elastic4s
在这之前先更正一下上篇中关于检查索引是否存在的方法:elastic4s的具体调用如下: //删除索引 val rspExists = client.execute(indexExists("company...可以在elastic4s里使用createOnly(true)来强制产生重复id异常: import com.sksamuel.elastic4s.
但后面我们会用elastic4s:一个开源的scala elasticsearch客户端,根据各种业务搜索场景,调用elasticsearch的各种api来实现行业专用的搜索功能。
{ "match" : {"lastname" : "lane"}} ] } } ] } } } elastic4s
Success(trb) => println(s"${trb}") case Failure(err) => println(s"error: ${err.getMessage}") } 用elastic4s...client.execute(f1) _ <- client.execute(f2) _ <- client.execute(f3) } yield ("成功增添三条记录") elastic4s
领取专属 10元无门槛券
手把手带您无忧上云