我正在尝试按产品类型和价格范围过滤我的商品数据。我不想对我的结果进行评分,因此它们都可以是0或1,我只需要结果集。
为什么我不能做以下事情?这看起来很合乎逻辑!
Elasticsearch版本:5.5
GET my_store/products/_search
{
"query": {
"constant_score": {
"filter": {
"term": {
"productType": "cooker"
},
"range": {
"price": {
"gte": 10,
"lte": 20
}
}
}
}
}
}
当我执行此操作时,我得到:
"[term] malformed query, expected [END_OBJECT] but found [FIELD_NAME]"
这可能意味着我在做一些语法上的错误
答案 0 :(得分:0)
这应该可以解决您的问题。我假设您打算逻辑和过滤器。如果您打算对它们进行OR操作,只需更换" must" by"应该"。 一个很好的参考:https://www.elastic.co/guide/en/elasticsearch/guide/current/combining-filters.html
{
"query": {
"constant_score": {
"filter": {
"bool": {
"must": [
{
"term": {
"productType": "cooker"
}
},
{
"range": {
"price": {
"gte": 10,
"lte": 20
}
}
}
]
}
}
}
}
}