我正在尝试使用带有范围查询的elasticsearch进行搜索。 (PHP)
这是我的源代码
$searchParams['body']['query']['range']['order_no']['gte'] = "2000";
$searchParams['body']['query']['range']['order_no']['lte'] = "2001";
=
{
"query": {
"range": {
"order_no": {
"gte": 2000,
"lte": 2001
}
}
}
}
但结果它有order_no:
2000
2001
2000001
200000
....
我只想要节目
2000
2001
此字段具有映射:
"order_no" : {
"type" : "string",
"index" : "not_analyzed"
}
如何解决?
答案 0 :(得分:2)
最好也是最有效的方法是将字段映射更改为
{
"order_no": {
"type": "integer",
"index": "not_analyzed"
}
}
与数值范围查询相比,字符串范围查询非常慢。
如果您不得不更改字段映射,那么另一个选项是在索引和搜索时用零填充输入值
{
"query": {
"range": {
"order_no": {
"gte": 00002000,
"lte": 00002001
}
}
}
}