- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个这样的“位置”字段
"location": {
"type": "string",
"index": "not_analyzed",
"store": true,
"fielddata": {
"format": "doc_values"
}
},
但是,当我对这个字段使用 Terms Aggregation 时,我看到了这种日志
[2015-05-13 15:42:56.210][DEBUG][index.fielddata.plain] Global-ordinals[location][361372] took 206 ms
[2015-05-13 17:55:44.692][DEBUG][index.fielddata.plain] Global-ordinals[location][461584] took 230 ms
[2015-05-13 17:56:21.907][DEBUG][index.fielddata.plain] Global-ordinals[location][263096] took 1205 ms
而且我还可以看到 Java 堆大小已经增加,这导致了长时间的旧垃圾回收。
为什么 doc_values 字段使用 java 堆?因为我也存储它们?我可以避免垃圾回收吗?
最佳答案
全局序数是将字段中的每个唯一术语映射到唯一数字的结构。这需要生成以便内存指纹和计算更好。
您可以了解有关全局序数的更多信息 here .
以下是此信息的摘要,以防有一天此链接失效:
用于减少字符串字段数据内存使用的技术之一称为序号。
假设我们有十亿个文档,每个文档都有一个 status
字段。只有三种状态:status_pending
、status_published
、status_deleted
。如果我们要在内存中保存每个文档的完整字符串状态,每个文档将使用 14 到 16 个字节,或大约 15 GB。
相反,我们可以识别三个唯一的字符串,对它们进行排序并编号:0、1、2。
Ordinal | Term
-------------------
0 | status_deleted
1 | status_pending
2 | status_published
原始字符串在序数列表中只存储一次,每个文档只是使用编号的序数来指向它包含的值。
Doc | Ordinal
-------------------------
0 | 1 # pending
1 | 1 # pending
2 | 2 # published
3 | 0 # deleted
这将内存使用量从 15 GB 减少到不到 1 GB!
关于elasticsearch - 为什么全局序数是建立在字段数据而不是 doc_values 上的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30218517/
我有一个这样的“位置”字段 "location": { "type": "string", "index": "not_analyzed", "sto
目前我们面临很多这样的异常: ElasticsearchException[org.elasticsearch.common.breaker.CircuitBreakingException: Dat
我想在elasticsearch中为_id字段设置doc_values 因为想根据_id进行排序 点击下面的 api 更新映射给我一个错误 PUT my_index/my_type/_mapping
在 Elasticsearch 5.6 中使用以下映射: "category" => [ "type"=>"keyword", "doc_values"=>true, "ind
在对 fielddata vs doc_values 进行的一些实验中,我遇到了一个奇怪的案例。在我之前的映射中,我根本没有使用文档值。在我的新映射中,我已将 doc_values: true 添加到
我是一名优秀的程序员,十分优秀!