使用浮点数的弹性搜索
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
我是 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