我想匹配过滤器中浮点的精确值。请考虑此过滤器中的myfloat
:
{
"filter" : { "bool" : { "must" : [
{ "match" : { "thing1" : "ABC" } },
{ "match" : { "thing2" : "SOMECODE" } },
{ "match" : { "myfloat" : 6490.1 } }
] } },
"weight" : 10
}
然而,它似乎忽略了小数点后的所有内容。换句话说,myfloat为6490.5的记录将匹配。
有没有办法让它只匹配精确匹配?这些是美元值,所以从不超过两位小数。
编辑:
以下是ES所说的数据类型:
"myfloat" : {
"type" : "long"
},
答案 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
}