Elasticsearch匹配精确浮点值

时间:2016-08-03 21:38:46

标签: elasticsearch

我想匹配过滤器中浮点的精确值。请考虑此过滤器中的myfloat

{
  "filter" : { "bool" : { "must" : [
    { "match" : { "thing1" : "ABC" } },
    { "match" : { "thing2" : "SOMECODE" } },
    { "match" : { "myfloat" : 6490.1 } }
  ] } },
  "weight" : 10
}

然而,它似乎忽略了小数点后的所有内容。换句话说,myfloat为6490.5的记录将匹配。

有没有办法让它只匹配精确匹配?这些是美元值,所以从不超过两位小数。

编辑:

以下是ES所说的数据类型:

"myfloat" : {
    "type" : "long"
},

1 个答案:

答案 0 :(得分:-1)

您应该使用“term”进行完全匹配(https://www.elastic.co/guide/en/elasticsearch/reference/2.0/query-dsl-term-query.html) 所以你的过滤器将成为

{
  "filter" : { "bool" : { "must" : [
    { "match" : { "thing1" : "ABC" } },
    { "match" : { "thing2" : "SOMECODE" } },
    { "term" : { "myfloat" : 6490.1 } }
  ] } },
  "weight" : 10
}