没有为[..]注册过滤器

时间:2015-01-27 20:07:07

标签: elasticsearch

以下ElasticSearch查询导致异常:

  

没有为[formattedPrice]

注册过滤器

当我只有一个'必须'的术语过滤器时,查询有效,但这显然不是我需要的。在这种情况下,Elastic Search期望使用什么语法?

{
   "query":{
      "function_score":{
         "query":{
            "filtered":{
               "query":{
                  "simple_query_string":{
                     "query":"yelp",
                     "fields":[
                        "trackName^10",
                        "sellerName^2",
                        "description"
                     ]
                  }
               },
               "filter":{
                  "bool":{
                     "must":[
                        {
                           "terms":{
                              "averageUserRating":[
                                 "4.5"
                              ]
                           },
                           "terms":{
                              "formattedPrice":[
                                 "free"
                              ]
                           }
                        }
                     ],
                     "should":{
                        "exists":{
                           "field":"userRatingCount"
                        }
                     }
                  }
               }
            }
         },
         "field_value_factor":{
            "field":"userRatingCount",
            "modifier":"log1p",
            "factor":0.1
         }
      }
   }
}

1 个答案:

答案 0 :(得分:4)

问题在于must部分:它应该是[{},{}...{}]形式的元素数组,而在您的情况下,您有[{terms,terms}]。它应该是[{terms},{terms}]。您缺少一个结束花括号和一个开头花括号:

{
  "query": {
    "function_score": {
      "query": {
        "filtered": {
          "query": {
            "simple_query_string": {
              "query": "yelp",
              "fields": [
                "trackName^10",
                "sellerName^2",
                "description"
              ]
            }
          },
          "filter": {
            "bool": {
              "must": [
                {
                  "terms": {
                    "averageUserRating": [
                      "4.5"
                    ]
                  }
                },
                {
                  "terms": {
                    "formattedPrice": [
                      "free"
                    ]
                  }
                }
              ],
              "should": {
                "exists": {
                  "field": "userRatingCount"
                }
              }
            }
          }
        }
      },
      "field_value_factor": {
        "field": "userRatingCount",
        "modifier": "log1p",
        "factor": 0.1
      }
    }
  }
}
相关问题