作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用Elasticsearch 6.2.1,现在尝试了解scaling_factor
参数设置为某个值时的工作方式。
根据文档的说明,字段的值乘以scaling_factor
,然后在索引时间存储为long
。当scaling_factor
为100时,我期望值1.234将在内部存储为123,之后可以在索引中找到1.23。我现在看到的是值1.234不会失去它的精度,我可以从索引中获取它的原始形式:1.234。
此版本的Elasticsearch中的错误吗?如果没有人可以解释幕后情况?
更新
@Val的答案阐明了Elasticsearch的行为,但我想理解为什么尽管索引仅包含缩放值,但仍可以通过原始原始值查找文档。例如,在以下映射的情况下:
{
"mappings": {
"properties": {
"num": {
"type": "scaled_float",
"scaling_factor": 100
}
}
}
}
{
"num": 1.234
}
{
"query": {
"match": {
"num": 1.234
}
}
}
最佳答案
如果您在源文档中看到1.234
,这很正常,ES不会修改源文档本身中的任何内容。
给定此映射:
PUT scaling
{
"mappings": {
"properties": {
"num": {
"type": "scaled_float",
"scaling_factor": 100
}
}
}
}
PUT scaling/_doc/1
{
"num": "1.234"
}
GET scaling/_doc/1
=>
{
"num": "1.234"
}
num
字段的doc值将产生您期望的结果:
GET scaling/doc/_search
{
"docvalue_fields": ["num"],
"script_fields": {
"doc_value": {
"script": {
"source": "doc.num.value"
}
},
"raw_value": {
"script": {
"source": "params._source.num"
}
}
}
}
{
"_index" : "scaling",
"_type" : "doc",
"_id" : "1",
"_score" : 1.0,
"fields" : {
"raw_value" : [
"1.234" <--- raw value that was sent for indexing
],
"doc_value" : [
1.23 <--- scaled doc value that was indexed
],
"num" : [
1.23 <--- scaled doc value that was indexed
]
}
}
关于elasticsearch - 设置scaling_factor参数时出现奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58398238/
我是一名优秀的程序员,十分优秀!