我想在弹性搜索中搜索数值表达式。
实施例
indent code 4.8663 spaces
indent code 121.232 spaces
indent code 12.3232 spaces
示例查询
get all string with "indent code between 1 and 100"
它应该获得第1和第3但不是第2。
{
"span_near": {
"in_order": 1,
"clauses": [
{
"span_term": {
"request": "indent"
}
},
{
"span_term": {
"request": "code"
}
}
,
{
"span_multi": {
"match":{
"range": {
"request": {
"to": 100,
"from": 1
}
}
}
}
}
],
"slop": 0,
"collect_payloads": 0
}
}
给出错误的结果。因为它是使用TermRangeQuery而不是NumericRangeQuery进行比较。
答案 0 :(得分:0)
如果您可以用整数(4.8663 => 5)替换浮点数或将浮点数乘以10的选定幂,以便所有数字都变为整数(4.8663 => 48663),那么您可以使用regexp
query进行此操作。
我已经使用整数(5,121和12)索引了三个文档,并且我已经能够使用以下查询在1-100区间内成功检索这两个文档。
{
"query": {
"regexp": {
"request": {
"value": "<1-100>"
}
}
}
}
如果您出于其他原因绝对需要保持精确度,那么这可能不适合您。