2017-01-06 6 views
0

용어 필터와 일치하는 문서에 부스트를 추가하려고합니다. 기본은 부울/MatchAll 쿼리입니다. 하지만 내 Elasticsearch 쿼리를 강화해도 아무 효과가 없습니다. 모든 결과 점수가 1로 설정됩니다Boosting은 Elasticsearch의 부울 필터링 된 쿼리에서 효과가 없습니다.

curl -XPOST localhost:9200/wiki_content/_search?pretty -d ' 
{ 
    "_source": [ 
    "title" 
    ], 
    "query": { 
    "bool": { 
     "must": [ 
     { 
      "match_all": {} 
     } 
     ], 
     "filter": [ 
     { 
      "bool": { 
      "should": [ 
       { 
       "term": { 
        "title.keyword": { 
        "value": "Main Page", 
        "boost": 9 
        } 
       } 
       }, 
       { 
       "term": { 
        "title.keyword": { 
        "value": "Top Page", 
        "boost": 999 
        } 
       } 
       } 
      ] 
      } 
     } 
     ] 
    } 
    } 
} 
' 

을하지만, 부스팅 작품을 필터링 쿼리를 사용하는 경우. 그러나 필자의 시스템의 제약으로 인해 필터링 된 쿼리를 사용할 수 없습니다. 그래서 원래의 쿼리 작업을 향상시키는 방법이 있습니까?

답변

0

쿼리의 필터 부분에서 부스트는 아무런 효과가 없습니다. 필터 만 사용하는 작업은 특정 값과 일치하는 쿼리를 필터링하는 것이므로. 대신 다음을 시도하십시오 :

curl -XPOST localhost:9200/wiki_content/_search?pretty -d ' 
{ 
    "_source": [ 
    "title" 
    ], 
    "query": { 
    "bool": { 
     "must": [ 
     { 
      "match_all": {} 
     } 
     ], 
     "should": [ 
     { 
      "term": { 
      "title.keyword": { 
       "value": "Main Page", 
       "boost": 9 
      } 
      } 
     }, 
     { 
      "term": { 
      "title.keyword": { 
       "value": "Top Page", 
       "boost": 999 
      } 
      } 
     } 
     ] 
    } 
    } 
} 
' 

... 두 용어 검색어를 최상위 bool 검색어의 should 절로 직접 이동하십시오.