使用浮点数的弹性搜索

elastic search using floating point

我是 Kibana 的新手。我正在 'Discover' 中进行一些搜索并在 'Visualize' 中绘制它们。对于一个任务,我需要过滤掉一个浮点数的字段。但是,当我在 discover 中使用浮点数进行搜索时,kibana returns 没有结果。

例如:

my_field: <= 6.66

那就没有结果了。但是,如果我使用

这样的整数值进行搜索
my_field: <= 6

才得到一个搜索结果。但是,my_field 返回结果中有浮点值。

所以我的问题是如何在 kibana 中使用浮点值进行搜索?

编辑: 如果我输入 GET master.bckup_v8/_mapping 然后我得到:

"my_field" : {
            "type" : "float"
          },
 

kibana搜索栏如下图所示: kibana search bar screenshot

选项栏选项: options

附加信息: 使用查询搜索:my_field:[* TO 6.66] 抛出错误:

Discover: Can only use prefix queries on keyword and text fields - not on [peakSpeed] which is of type [float]

来自检查的查询 my_field:<=6

GET /_search
{
  "version": true,
  "size": 10000,
  "sort": [
    {
      "timestamp": {
        "order": "desc",
        "unmapped_type": "boolean"
      }
    }
  ],
  "_source": {
    "excludes": []
  },
  "aggs": {
    "2": {
      "date_histogram": {
        "field": "timestamp",
        "interval": "3h",
        "time_zone": "Europe/Berlin",
        "min_doc_count": 1
      }
    }
  },
  "stored_fields": [
    "*"
  ],
  "script_fields": {},
  "docvalue_fields": [
    {
      "field": "ingestionTime",
      "format": "date_time"
    },
    {
      "field": "timestamp",
      "format": "date_time"
    }
  ],
  "query": {
    "bool": {
      "must": [
        {
          "query_string": {
            "query": "my_field: <= 6",
            "analyze_wildcard": true,
            "default_field": "*"
          }
        },
        {
          "range": {
            "timestamp": {
              "gte": 1606777200000,
              "lte": 1607435332914,
              "format": "epoch_millis"
            }
          }
        }
      ],
      "filter": [],
      "should": [],
      "must_not": []
    }
  },
  "highlight": {
    "pre_tags": [
      "@kibana-highlighted-field@"
    ],
    "post_tags": [
      "@/kibana-highlighted-field@"
    ],
    "fields": {
      "*": {}
    },
    "fragment_size": 2147483647
  }
}

起初您的查询无效。你应该删除 :

my_field <= 6.66

如果它不起作用,您的字段可能被映射为整数(长?)而不是浮点数。

您可能应该阅读有关 elasticsearch 和 kibana 的基本文档,以了解基本概念和不同的功能。 https://www.youtube.com/watch?v=wAjuLb48xCU https://medium.com/@sami.jan/fundamentals-of-elasticsearch-cbb273160f60

实际上,您遇到的问题已记录在案 here。可以通过在 Kibana 中转到“管理 > 高级设置”,然后将以下内容添加到 query:queryString:options 配置

来解决
"lenient": true