我在 Kibana 有大量交易。有 1 个字段(timetaken)表示交易完成所需的时间。问题是所花费的时间是字符串形式的。当我使用>15000时;它还显示小于 15000 的字段。
我想获取所有大于15000(毫秒)的交易。
PUT test_time/_doc/1
{"timetaken":"15000"}
PUT test_time/_doc/2
{"timetaken":"1000"}
GET test_time/_search
{
"query": {
"range": {
"timetaken": {
"lte": "15000"
}
}
}
}
-- 复制当前映射并添加
copy_to
和带有类型的新字段。
GET test_time
-- 更新映射并添加新字段。
PUT test_time/_mapping
{
"properties": {
"timetaken": {
"type": "text",
"copy_to": "timetaken_integer",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"timetaken_integer": {
"type": "long"
}
}
}
-放置映射后,新数据将在
timetaken_integer
字段上可用。
PUT test_time/_doc/3
{"timetaken":"1000"}
-使用新字段
timetaken_integer
搜索您的数据。
GET test_time/_search
{
"query": {
"range": {
"timetaken_integer": {
"lt": "15000"
}
}
}
}
-更新现有数据
POST test_time/_update_by_query