2017-01-06 3 views
0

Я пытаюсь добавить импульс к документам, которые соответствуют фильтру терминов. Основой является Boolean/MatchAll запрос. Но повышение в моем запросе Elasticsearch не влияет. Все оценки результата устанавливается в 1:Boosting не влияет на Boolean-отфильтрованный запрос в 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

В части фильтра запроса усиление не будет иметь эффекта, так как задание только фильтров - ehhm, фильтрует запросы, соответствующие определенным значениям. Попробуйте вместо этого:

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.

Смежные вопросы