2017-02-16 4 views
2

弾性検索5.2.0のこのクエリにこのフィルタを追加するにはどうすればよいですか。Elasticsearchのfunction_scoreクエリにフィルタを追加する方法5

フィルタリングされた配列にフィルターをラップすることを試みました。

フィルター

"filter" : { 
    "term" : { "body.category" : 1} 
} 

クエリ

{ 
    "query": { 
    "function_score": { 
     "query": { 
     "multi_match": { 
      "operator": "and", 
      "query": "my search", 
      "fuzziness": 1, 
      "fields": [ 
      "body.name^5", 
      "body.manufacturer^33", 
      "body.sections.name", 
      "body.sections.parent.name", 
      "body.sections.parent.parent.name" 
      ] 
     } 
     }, 
     "functions": [ 
     { 
      "field_value_factor": { 
      "field": "body.rank" 
      } 
     } 
     ], 
     "score_mode": "multiply" 
    } 
    } 
} 

答えて

3

私はブール値でクエリをラップすることによってそれを解決し、そこにフィルタを配置します。

{ 
     "query": { 
     "function_score": { 
      "query": { 
      "bool": { 
       "filter": { 
       "term": { 
        "body.category": 1 
       } 
       }, 
       "should": { 
       "multi_match": { 
        "operator": "and", 
        "query": "my search", 
        "fuzziness": 1, 
        "fields": [ 
        "body.name", 
        "body.manufacturer", 
        "body.sections.name", 
        "body.sections.parent.name", 
        "body.sections.parent.parent.name" 
        ] 
       } 
       } 
      } 
      }, 
      "functions": [ 
      { 
       "field_value_factor": { 
       "field": "body.rank" 
       } 
      } 
      ], 
      "score_mode": "multiply" 
     } 
     } 
    } 
関連する問題