Kibana 对字符串值进行过滤

问题描述 投票:0回答:1

我在 Kibana 有大量交易。有 1 个字段(timetaken)表示交易完成所需的时间。问题是所花费的时间是字符串形式的。当我使用>15000时;它还显示小于 15000 的字段。

我想获取所有大于15000(毫秒)的交易。

elasticsearch kibana elastic-stack dashboard
1个回答
0
投票
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

© www.soinside.com 2019 - 2024. All rights reserved.