我有一个Elasticsearch
索引,如下所示
{
"Price": "50.99"
},
{
"Price": "30.99"
},
{
"Price": "40.99"
},
{
"Price": "10.99"
}
我正在尝试根据price
的范围来获取文档。我想退回价格范围为30-100
的文件。但是它没有返回任何文档。
GET index_name/_search
{
"query": {
"bool": {
"must": [
{ "range": {"Price": {"gte": 40, "lte": 100}}}
]
}
}
}
由于Price
为字符串格式,因此无法提取文档。我没有更改index
的权限。有没有一种方法可以查询它而不更改索引?
答案 0 :(得分:0)
最佳方法:将字段类型更改为浮动
但是无论如何,如果要保持字段类型为字符串,可以使用无痛脚本来实现。即
GET index_name/_search
{
"query": {
"bool": {
"must": {
"script": {
"script": {
"inline": "Float.parseFloat(doc['Price.keyword'].value) >= 40 && Float.parseFloat(doc['Price.keyword'].value) <= 100",
"lang": "painless"
}
}
}
}
}
}