document解析(09 ES的document路由原理,写一致性,读取以及增删改等请求的原理)
本文目录
- 09 ES的document路由原理,写一致性,读取以及增删改等请求的原理
- dom4j解析xml与document解析xml的区别,最好从性能上回答
- 网页中document 代表什么意思!
- JS中的document.documentElement是什么意思啊请详细解答一下啊拜托拜托
- html window和document对象
- 解析传入参数错误/document什么意思
- DocumentHelper.parseText 怎么解析&
- DOM解析根节点指的是根元素吗
09 ES的document路由原理,写一致性,读取以及增删改等请求的原理
本节主要深入一些原理型的知识,包括document路由原理,写一致性,读取以及增删改等请求的原理
(1)document路由到shard上是什么意思?
一个index的数据会被分为多个shard中。所以说一个document,只能存在于一个shard中。当客户端创建document的时候,es此时就需要决定这个document是放在这个index的哪个shard上。这个过程,就称之为document routing,即数据路由。
(2)路由算法:shard = hash(routing) % number_of_primary_shards
举个例子,一个index有3个primary shard,P0,P1,P2
每次增删改查一个document的时候,都会带过来一个routing number,默认就是这个document的id(可能是手动指定,也可能是自动生成)ES会将这个routing值,传入一个hash函数中,产出一个routing值的hash值,hash(routing) = 21。然后将hash函数产出的值对这个index的primary shard的数量求余数,21 % 3 = 0。ES就把这个document就放在P0上。(由这个就可以知道primary_shards的数量为什么是固定的了)
(3)手动指定routing: _id or custom routing value
默认的routing就是_id,也可以在发送请求的时候,手动指定一个routing,比如说
具体操作参见官方文档
***隐藏网址***
手动指定routing value是很有用的,可以保证说,某一类document一定被路由到一个shard上去,那么在后续进行应用级别的负载均衡,以及提升批量读取的性能的时候,是很有帮助的
(1)客户端选择一个node发送请求过去,这个node就是coordinating node(协调节点)
(2)coordinating node,对document进行路由,将请求转发给对应的node(有primary shard)
(3)实际的node上的primary shard处理请求,然后将数据同步到replica node
(4)coordinating node,如果发现primary node和所有replica node都搞定之后,就返回响应结果给客户端
c***istency已经废弃了。
使用 wait_for_active_shards进行设置,默认值为1,即只要求主分片处于活动状态, 还可以设置为2,3等,就是大于0,小于number_of_replicas+1的正整数。
wait_for_active_shards=all表示number_of_replicas+1,即该索引所有分片的总数。
具体说明参见官方文档:
***隐藏网址***
1、客户端发送请求到任意一个node,成为coordinate node
2、coordinate node对document进行路由,将请求转发到对应的node,此时会使用round-robin随机轮询算法,在primary shard以及其所有replica中随机选择一个,让读请求负载均衡
3、接收请求的node返回document给coordinate node
4、coordinate node返回document给客户端
5、特殊情况:document如果还在建立索引过程中,可能只有primary shard有,任何一个replica shard都没有,此时可能会导致无法读取到document,但是document完成索引建立之后,primary shard和replica shard就都有了
1、bulk中的每个操作都可能要转发到不同的node的shard去执行
2、如果采用比较良好的json数组格式
允许任意的换行,整个可读性非常棒,读起来很爽,es拿到那种标准格式的json串以后,要按照下述流程去进行处理
(1)将json数组解析为JSONArray对象,这个时候,整个数据,就会在内存中出现一份一模一样的拷贝,一份数据是json文本,一份数据是JSONArray对象
(2)解析json数组里的每个json,对每个请求中的document进行路由
(3)为路由到同一个shard上的多个请求,创建一个请求数组
(4)将这个请求数组序列化
(5)将序列化后的请求数组发送到对应的节点上去
3、耗费更多内存,更多的jvm gc开销
我们之前提到过bulk size最佳大小的那个问题,一般建议说在几千条那样,然后大小在10MB左右,所以说,可怕的事情来了。假设说现在100个bulk请求发送到了一个节点上去,然后每个请求是10MB,100个请求,就是1000MB = 1GB,然后每个请求的json都copy一份为jsonarray对象,此时内存中的占用就会翻倍,就会占用2GB的内存,甚至还不止。因为弄成jsonarray之后,还可能会多搞一些其他的数据结构,2GB+的内存占用。占用更多的内存可能就会积压其他请求的内存使用量,比如说最重要的搜索请求,分析请求,等等,此时就可能会导致其他请求的性能急速下降.
另外的话,占用内存更多,就会导致java虚拟机的垃圾回收次数更多,跟频繁,每次要回收的垃圾对象更多,耗费的时间更多,导致es的java虚拟机停止工作线程的时间更多
4、现在的奇特格式
(1)不用将其转换为json对象,不会出现内存中的相同数据的拷贝,直接按照换行符切割json
(2)对每两个一组的json,读取meta,进行document路由
(3)直接将对应的json发送到node上去
5、最大的优势在于,不需要将json数组解析为一个JSONArray对象,形成一份大数据的拷贝,浪费内存空间,尽可能地保证性能
膜拜一下大神的文章:
***隐藏网址***
dom4j解析xml与document解析xml的区别,最好从性能上回答
印象中解析XML只有dom4j、jdom、SAX==方法,没听过还有document。
DOM:处理大型文件时其性能下降的非常厉害。这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对XML的随机访问
SAX:不现于DOM,SAX是事件驱动型的XML解析方式。它顺序读取XML文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码
其实我觉得差不多,xml的解析方式有sax和dom解析两种方式,而jdom和dom4j只是解析工具。其中sax解析是针对事件进行解析,效率较高吧,而最常用的是dom解析,就是从根元素开始对xml进行解析,因为是从头开始,所以当文档很大时,有时效率不高,另外修改删除也不是很方便。
jdom和dom4j用起来差不多,就是方法有一点小不同。你上网查查就知道了
网页中document 代表什么意思!
分类: 电脑/网络 》》 程序设计 》》 其他编程语言
问题描述:
document代表什么意思,还有它的下级是什么!
window.event又是什么...
我没能完全理解网页中一些对像之间的关系,
谁能给我一个比较清楚的结构图?
解析:
这些都是DOM的内容。即文档对象模型。
最新web标准将网页的数据,行为分离。
xml记录数据,DOM操作数据,即行为。
因此document,window等DOM在vbs,js中都可用。
window---窗口对象
打开一个IE窗口,就创建的一个window对象,包括整个窗口(整个)。
window.event--窗口中的事件。
document--文档对象,window对象中的可是部分(body部分)。不包括标题,状态栏。
JS中的document.documentElement是什么意思啊请详细解答一下啊拜托拜托
documentElement 属性可返回文档的根节点。
document.body是DOM中Document对象里的body节点, document.documentElement是文档对象根节点(html)的引用。
IE在怪异模型(quick mode)下document.documentElement无**确取到clietHeight scrollHeight等值,比如clietHeight=0。可以见IE的怪异模型并没有把html作为盒子模型的一部分,好在现在很少使用怪异模 型。(注:如果页面没写DTD或写的不对,IE6默认使用怪异模型解析页面)
document.body.scrollHeight和document.documentElement.scrollHeight的区别:
document.body.scrollHeight是body元素的滚动高 度,document.documentElement.scrollHeight为页面的滚动高度,且 document.documentElement.scrollHeight在IE和Firefox下还有点小差异。
IE : document.documentElement.scrollHeight = document.body.scrollHeight + marginTop bottom高度 + 上下border宽度
firefox : document.documentElement.scrollHeight = document.body.scrollHeight + marginTop bottom高度
这是DOMDocument对象里的body子节点和整个节点树的根节点root。
DOM把层次中的每一个对象都称之为节点,就是一个层次结构,你可以理解为一个树形结构,就像我们的目录一样,一个根目录,根目录下有子目录,子目录下还有子目录。
以HTML超文本标记语言为例:整个文档的一个根就是《html》,在DOM中可以使用document.documentElement来 访问它,它就是整个节点树的根节点。而body是子节点,要访问到body标签,在脚本中应该写:document.body。
html window和document对象
依次回答上述问题:
1. 完全一样,可以通过 window.document.getElementById === document.getElementById 来验证。
2. window 对象在客户端 JavaScript 中引用的是全局对象,处于作用域链的最后端,根据标识符解析规则,引用全局对象的属性或方法是可以省略 window 的。比如 window.document 和 document 是完全一样的。
3. 成员对象这个术语在 JavaScript 很少使用。document 对象是 window 对象的属性。成员对象就是对象的一个属性,只不过这个属性的值是一个对象。如果该属性是一个方法,用其他面向对象语言的术语就可以称之为成员方法。
4. 只要对象是可扩展的,你就可以在该对象上添加任意的属性(数据成员、成员对象)或方法(成员方法),对于已存在的属性,是否可以自定义取决于该属性的属性特性(property attribute)。对于 window.document 来说,它的属性特性是:不可配置、可枚举、可读、不可写。因此无法删除或修改该属性。
5&6. 如 3 所述。
解析传入参数错误/document什么意思
你好, 可能是系统问题,或者浏览器问题,你可以把浏览器的缓存清一下,然后刷新下网页再试下。
DocumentHelper.parseText 怎么解析&
前几天刚好在项目中也遇到这种情况,调用web service服务,服务端返回xml格式的报文string,解析,取出各标签字段的值
格式如下:
《Resp***e》
《mailNo》124579546621《/mailNo》
《success》true《/success》
《/Resp***e》
dom解析方法如下:
Document document = DocumentHelper.parseText(xmlResult);//org.dom4j.DocumentHelper
Element rootElement = document.getRootEle
DOM解析根节点指的是根元素吗
1.根节点代表整个文档,是我们解析XML文档的入口,通过它获取到Document对象;
documentObject.documentElement返回文档的根节点。
例:xmlDoc=loadXMLDoc("books.xml");
var x=xmlDoc.documentElement;//获取根节点
2.根元素节点代表XML文档的根元素,必须要在获得Document对象之后才能一层一层地去访问它的元素。
对于books.xml文件中最外层的《bookstore》就是根元素节点。
books.xml:
《?xml version="1.0" encoding="utf-8"?》
《bookstore》
《book category="children"》
《title lang="en"》Harry Potter《/title》
《author》J K. Rowling《/author》
《year》2005《/year》
《price》29.99《/price》
《/book》
《/bookstore》
结论:根节点不同于根元素节点。
更多文章:
plsql导出dmp文件(PL**L怎样导出oracle表结构)
2026年4月11日 06:40
openstack华为云(联通行业云的高性能计算是指哪两款产品)
2026年4月11日 06:20
cocos2dx的apk打包报错(cocos2dx打包apk时,keystore信息输入错误怎么办)
2026年4月11日 05:00
document解析(09 ES的document路由原理,写一致性,读取以及增删改等请求的原理)
2026年4月11日 04:40
js点击图片弹出大图(求JavaScript图片代码,点击图片后,出现图片的大图,背景变黑色)
2026年4月11日 04:20
illustrated by(writtenby和illustratedby的区别)
2026年4月11日 04:00



