2017-05-04 13 views
2

필터를 사용하여 elsticsearch dis_max 쿼리를 사용하는 방법을 파악하는 데 어려움을 겪고 있습니다.탄성 검색 : 필터를 사용하여 dismax 쿼리를 사용하는 방법

나는이 수행 할 때

{ 
    "query": { 
     "dis_max": { 
      "queries": [{ 
       "multi_match": {} 
      }, 
      { 
       "multi_match": {} 
      }], 
      "filter": { 
       //Term filter 
      }   
     } 
    } 
} 

자사가 가 [dis_max] 쿼리 [필터]을 지원하지 않습니다라고합니다. 하지만 필터링 된 별칭과 함께 dis_max 쿼리를 사용할 수 있습니다.

예 : 아래와 같이 정의 된 필터로 별칭을 만들고 dis_max 쿼리를 수행하는 동안 동일한 별칭을 사용하면 완벽하게 작동합니다.

{ 
    "add" : { 
     "index" : "test1", 
     "alias" : "alias1", 
     "filter" : { //Term filter } 
    } 
} 

따라서 별칭을 만들지 않고이를 달성해야합니다. 아무도 그것을하는 방법을 말해 줄 수 있습니다.

+0

' "multi_match": {}'->' "multi_match": {}' – RoiHatam

답변

2

답을 찾고있는 분이라면 반드시 dis 질의를 사용하여 bool 쿼리를 사용하여 bool 쿼리의 필터 섹션으로 필터해야합니다.

예 :

{ 
    "query": { 
     "bool": { 
      "must": { 
       "dis_max": { 
        "queries": [{ 
         "multi_match": {} 
        }, 
        { 
         "multi_match": {} 
        }] 
       } 
      } 
      "filter": { 
       //Term filter 
      }   
     } 
    } 
}