- 博客(6)
- 收藏
- 关注
原创 Elasticsearch GET请求的实时性是怎样保证的
在ES 2.x版本中,使translog来保证GET请求的实时性,因为Translog中的数据肯定是最新的。在5.0的时候使用refresh代替translog,这样数据也是最新的,但是这样的话一旦使用GET请求还没有refresh的数据,就会产生新的segment,并且update也会受到影响。在6.3的时候在update时又接着从translog中读取了,但是普通的GET请求还是走的refresh。在7.6版本时普通的GET请求又接着使用translog了。目前以上都是根据https://git
2020-11-15 23:09:08 500
原创 Elasticsearch GET请求流程源码分析
首先看一下一个GET请求是什么样的(参考官网):GET twitter/_doc/0{ "_index" : "twitter", "_type" : "_doc", "_id" : "0", "_version" : 1, "_seq_no" : 10, "_primary_term" : 1, "found": true, "_source" : { "user" : "kimchy", "date"
2020-07-25 01:27:41 943
原创 Elasticsearch写入流程源码分析(三)
接着上文源码分析(二),需要真正的向分片所在节点发请求去执行索引操作了。在TransportReplicationAction这个类的构造方法里面注册了主分片写入和副本分片写入的相关的方法: // 注册了执行主分片请求的handler transportService.registerRequestHandler(transportPrimaryAction, executor, forceExecutionOnPrimary, true, in ->
2020-07-24 21:08:03 308
原创 Elasticsearch写入流程源码分析(二)
接着上文源码分析(一),判断完pipeline以后就会进行pipeline处理: //上面判断完是否有pipeline,然后在这里进行执行 //只要bulk请求中有一个请求有pipeline,就会走下面 if (hasIndexRequestsWithPipelines) { // this method (doExecute) will be called again, but with the bulk requests updat
2020-07-24 20:45:47 384
原创 Elasticsearch写入流程源码分析(一)
ELasticsearch写入流程源码分析基于Elasticsearch 7.2 ES如果需要对索引进行写入,更新,删除,需要用到 Index API,Delete API,Update API,也可使用Bulk API多条进行更新,核心源码类是【org.elasticsearch.action.bulk.TransportBulkAction】,接下来先看一个HTTP请求怎么到达这个类。在【org.elasticsearch.rest.action.document】这个包下面具体注册了一些r
2020-07-19 05:17:18 615
原创 Elasticsearch使用scrpit + pipeline更新join类型的文档
Elasticseach中可以使用在update和update_by_query中使用script来更新文档,一般情况下使用简单的赋值语句编写script就可以使用,例如:ctx._source.txt = 'update info';但是如果mapping中定义了join类型的父子关系的文档,使用script直接更新是有问题的,以painless脚本为例,首先,ctx._source在脚本中充当的是一个map,如果我们脚本中直接使用‘ctx._source.map.key = value’ 当文档
2020-07-08 00:22:59 559
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人