2017-07-28 10 views
0

製品タイプと価格帯で商品データをフィルタリングしようとしています。結果を得点にしたくないので、結果はすべて0または1になります。結果セットが必要です。ブールフィルタの弾性検索期間と範囲

なぜ私は以下のことを行うことができませんか?それは完全に論理的なようです!

Elasticsearchバージョン:5.5

GET my_store/products/_search 
{ 
    "query": { 
    "constant_score": { 
     "filter": { 
     "term": { 
      "productType": "cooker" 
     }, 
     "range": { 
      "price": { 
      "gte": 10, 
      "lte": 20 
      } 
     } 
     } 
    } 
    } 
} 

私はこれを実行すると、私が手:

おそらくこれがいない私は
  1. 文法的に間違って何かをやっている意味
    "[term] malformed query, expected [END_OBJECT] but found [FIELD_NAME]" 
    

    論理構造のように見える?

  2. それが間違っていても、私は適応しなければなりません...正しい構文は何ですか?

答えて

0

これは問題を解決するはずです。私はあなたが論理的にそしてフィルターを意味すると仮定しています。あなたがそれらをORすることを意図していたならば、単に "必要"を "should"に置き換えてください。 良いリファレンス: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 
           } 
          } 
         } 
        ] 
       } 
      } 
     } 
    } 
} 
関連する問題