elasticsearch ElasticSearch查询返回错误的结果,elasticsearch,kibana,elasticsearch,Kibana" /> elasticsearch ElasticSearch查询返回错误的结果,elasticsearch,kibana,elasticsearch,Kibana" />

elasticsearch ElasticSearch查询返回错误的结果

elasticsearch ElasticSearch查询返回错误的结果,elasticsearch,kibana,elasticsearch,Kibana,我对ElasticSearch比较陌生,遇到了这个问题,我似乎不知道为什么 因此,对于这个特定字段,它似乎将所有值都视为零,即使单个记录是非零值。这似乎只发生在这个数字字段上,而不会发生在其他类似的字段上(如cpu pct、mem pct等) 这些记录仅在我查询“system.filesystem.used.pct==0”的记录时显示,而在我执行类似“system.filesystem.used.pct>0”的操作时,这些记录都不显示 我也在kibana的开发工具中进行了类似的查询,但没有得到

我对ElasticSearch比较陌生,遇到了这个问题,我似乎不知道为什么

因此,对于这个特定字段,它似乎将所有值都视为零,即使单个记录是非零值。这似乎只发生在这个数字字段上,而不会发生在其他类似的字段上(如cpu pct、mem pct等)

这些记录仅在我查询“system.filesystem.used.pct==0”的记录时显示,而在我执行类似“system.filesystem.used.pct>0”的操作时,这些记录都不显示

我也在kibana的开发工具中进行了类似的查询,但没有得到任何结果:

GET metricbeat-*/_search{
  "query": {
    "range":{
      "system.filesystem.used.pct":{
         "gt":0
        }
       }
     }
}

但是,如果我这样做,我将得到所有非零结果,就像在discover中一样:

GET metricbeat-*/_search
{
  "query": {
    "term": {
      "system.filesytem.used.pct":0
     }
  }
}

正如@Ron Serruya所指出的,存在一个映射问题。检测到
system.filesystem.used.pct
的映射为
integer
类型。由于您将获得
cpu.pct
字段的预期搜索结果,
cpu.pct
的映射必须是
float
类型

案例1:

如果将两个样本数据索引为(按相同顺序)

然后elasticsearch检测到
float
数据类型(如果您使用的是动态映射)。这是因为字段类型的检测取决于您在字段中插入的第一个数据

案例2:

现在,如果您按此顺序索引数据

{
  "count": 0
}
{
  "count": 0.45
}
在这里,elasticsearch将检测到
count
long
数据类型


您需要使用新的索引映射重新创建索引,重新索引数据,然后在
system.filesystem.used.pct

修改后的索引映射将被删除

{
  "mappings": {
    "properties": {
      "system": {
        "properties": {
          "filesytem": {
            "properties": {
              "used": {
                "properties": {
                  "pct": {
                    "type": "float"
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}

正如@Ron Serruya所指出的,存在一个映射问题。检测到
system.filesystem.used.pct
的映射为
integer
类型。由于您将获得
cpu.pct
字段的预期搜索结果,
cpu.pct
的映射必须是
float
类型

案例1:

如果将两个样本数据索引为(按相同顺序)

然后elasticsearch检测到
float
数据类型(如果您使用的是动态映射)。这是因为字段类型的检测取决于您在字段中插入的第一个数据

案例2:

现在,如果您按此顺序索引数据

{
  "count": 0
}
{
  "count": 0.45
}
在这里,elasticsearch将检测到
count
long
数据类型


您需要使用新的索引映射重新创建索引,重新索引数据,然后在
system.filesystem.used.pct

修改后的索引映射将被删除

{
  "mappings": {
    "properties": {
      "system": {
        "properties": {
          "filesytem": {
            "properties": {
              "used": {
                "properties": {
                  "pct": {
                    "type": "float"
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}

这个值的映射可能是一个整数?所以0.145被索引为0,这个值的映射可能是整数吗?因此,0.145被索引为0Thanks alot!我已经检查了映射,它确实是long类型而不是float类型。非常感谢!我已经检查了映射,实际上它是long类型而不是float类型。