2013-01-03 124 views
0

我有以下查詢:ElasticSearch過濾器升壓的字段值

{ 
"from": 0, 
"query": { 
    "custom_filters_score": { 
     "filters": [ 
      { 
       "boost": 1.5, 
       "filter": { 
        "term": { 
         "format": "test1" 
        } 
       } 
      }, 
      { 
       "boost": 1.5, 
       "filter": { 
        "term": { 
         "format": "test2" 
        } 
       } 
      } 
     ], 
     "query": { 
      "bool": { 
       "must": { 
        "query_string": { 
         "analyzer": "query_default", 
         "fields": [ 
          "title^5", 
          "description^2", 
          "indexable_content" 
         ], 
         "query": "blah" 
        } 
       }, 
       "should": [] 
      } 
     } 
    } 
}, 
"size": 50 
} 

其中需要提高的東西,在他們{"format":"test1"},如果我正確地閱讀文檔。

但是,使用explain告訴我"custom score, no filter match, product of:"是結果,並且匹配過濾器的返回文檔的分數不會被此過濾器更改。

我在做什麼錯?

編輯:這裏的模式:

mapping: 
    edition: 
    _all: { enabled: true } 
    properties: 
     title:  { type: string, index: analyzed } 
     description: { type: string, index: analyzed } 
     format:  { type: string, index: not_analyzed, include_in_all: false } 
     section:  { type: string, index: not_analyzed, include_in_all: false } 
     subsection: { type: string, index: not_analyzed, include_in_all: false } 
     subsubsection: { type: string, index: not_analyzed, include_in_all: false } 
     link:  { type: string, index: not_analyzed, include_in_all: false } 
     indexable_content: { type: string, index: analyzed } 

,讓我們假設一個典型的文件是這樣的:

{ 
    "format": "test1", 
    "title": "blah", 
    "description": "blah", 
    "indexable_content": "keywords here", 
    "section": "section", 
    "subsection": "child-section", 
    "link":"/section/child-section/blah" 
} 

回答

0

如果說「不匹配的過濾器」,這意味着它不匹配查詢中的任何過濾器。最有可能的原因是與您的查詢匹配的記錄中沒有術語「test1」。不幸的是,你沒有提供映射和測試數據,所以很難確定那裏發生了什麼。

嘗試運行此查詢,看看是否能真正找到符合您的搜索條件,應墊高的任何記錄:

{ 
    "from": 0, 
    "query": { 
     "bool": { 
      "must": [{ 
       "query_string": { 
        "analyzer": "query_default", 
        "fields": ["title^5", "description^2", "indexable_content"], 
        "query": "blah" 
       } 
      }, { 
       "term": { 
        "format": "test1" 
       } 
      }] 
     } 
    }, 
    "size": 50 
} 

您的查詢看起來不錯,並根據所提供的信息,它應該工作:https://gist.github.com/4448954

+0

我已經更新了我的問題,包括架構和編輯的示例文檔,如果這改變了任何東西。 –

+0

我已經用您提供的信息更新了要點。它仍然有效。我用0.20.2測試了它。所以,我猜想你要麼編輯了一些重要的信息,要麼就是使用了一些老版本的elasticsearch,這些功能被破壞了。你可以創建一個完全不重要的repro嗎? – imotov

+0

原來我是個白癡,索引沒有加載。查詢確實起作用了! –