2016-07-21 4 views
1

elasticsearch의 bool 쿼리에서 must 절에 최소 점수를 적용 할 수있는 방법이 있습니까?Elasticsearch의 bool 쿼리에서 "must"에 대한 Min_score

나는 같은 것을 할 수 있도록하려면 : 점수> 0.3의 문서에 대한 점수> 0.3 일치하는 주소 쿼리와 일치하는 이름 쿼리를 필요로

{ 
    "query": { 
    "bool": { 
     "must": [ 
      { 
       "match": { 
       "name": { 
        "query":"A Name", 
        "min_score": 0.3 
       } 
       } 
      }, 
      { 
       "match": { 
       "address": { 
        "query":"1 Somewhere Street, Somewhereset, UK", 
        "min_score": 0.3 
       } 
       } 
      } 
     ] 
    } 
    } 
} 

반환됩니다. 이것은 끔찍한 주소 일치 (예 : 1과 일치)가 있었음에도 불구하고 반환되는 실제 이름 일치를 중지하고 그 반대의 경우도 마찬가지입니다.

저는 현재 Elasticsearch 1.5를 사용하고 있습니다. 그러나 나는 2.3에서도 이것을 원했습니다.

+1

몇 가지 질문에 많은 도움이 될 수있는 탄성의 버전을 지정 - V1 및 V2 사이 5 월 차이가 있습니다. – Harvey

답변

2

이 시도하고 작동하는지 알려주세요 :

{ 
    "query": { 
    "bool": { 
     "must": [ 
     { 
      "function_score": { 
      "query": { 
       "match": { 
       "name": { 
        "query": "A Name" 
       } 
       } 
      }, 
      "min_score": 0.3 
      } 
     }, 
     { 
      "function_score": { 
      "query": { 
       "match": { 
       "address": { 
        "query": "1 Somewhere Street, Somewhereset, UK" 
       } 
       } 
      }, 
      "min_score": 0.3 
      } 
     } 
     ] 
    } 
    } 
} 
+0

잘 작동합니다. 함수 점수 쿼리를 사용하려고 생각했지만 점수를 너무 낮게 설정하여 전반적인 최소 점수를 초과하지 않게 할 필요가 있다고 생각했습니다. 또한 실용적 이기에 너무 느릴 것으로 예상했지만 실제로는 기능을 사용하지 않기 때문에 전혀 느려지지 않습니다. 감사. – kiml42

+0

당신은 환영합니다 :-). –