2017-06-13 78 views
2

假設我有一組類似的文件: -範圍查詢通過匹配查詢在彈性搜索返回的分數

{ 
     "Name":"Random String 1" 
     "Type":"Keyword" 
     "City":"Lousiana" 
     "Quantity":"10" 
    } 

現在我想用在球場上的N元analyazer實現全文檢索名稱和城市。

在那之後,我想只過濾的結果比1.2(也許範圍查詢聚集方法)

對特性應用於長期聚集方法後,更大的

"_score" :<Query Score Returned by ES> 

返回「鍵入「,然後使用」top_hits「聚合方法返回每個存儲桶中的頂部結果。 我該怎麼做?

我已經能夠實現除搜索查詢返回的分數範圍查詢之外的所有內容。

+0

你能告訴我們UR映射? – user3775217

+0

我給出的虛擬數據並不是我用於我的項目的確切數據,但是,下面提供的映射與您使用的類似分析器相似。我只是使用一個不同的搜索分析器,這是一個標準的analayzer –

回答

1

如果您想對文檔進行有機評分,那麼我可以在查詢中使用min_score來篩選匹配的文檔以獲得分數。

爲的ngram analyer我添加空白標記生成器和一個小寫過濾

映象

PUT index1 
{ 
    "settings": { 
    "analysis": { 
     "analyzer": { 
     "edge_n_gram_analyzer": { 
      "tokenizer": "whitespace", 
      "filter" : ["lowercase", "ednge_gram_filter"] 
     } 
     }, 
     "filter": { 
     "ednge_gram_filter" : { 
     "type" : "NGram", 
     "min_gram" : 2, 
     "max_gram": 10 
     } 
     } 
    } 
    }, 
    "mappings": { 
    "document_type" : { 
     "properties": { 
     "Name" : { 
      "type": "text", 
      "analyzer": "edge_n_gram_analyzer" 
     }, 
     "City" : { 
      "type": "text", 
      "analyzer": "edge_n_gram_analyzer" 
     }, 
     "Type" : { 
      "type": "keyword" 
     } 
     } 
    } 
    } 
} 

指數文獻

POST index1/document_type 
{ 
     "Name":"Random String 1", 
     "Type":"Keyword", 
     "City":"Lousiana", 
     "Quantity":"10" 
} 

查詢

POST index1/_search 
{ 
    "min_score": 1.2, 
    "size": 0, 
    "query": { 
    "bool": { 
     "should": [ 
     { 
      "term": { 
      "Name": { 
       "value": "string" 
      } 
      } 
     }, 
     { 
      "term": { 
      "City": { 
       "value": "string" 
      } 
      } 
     } 
     ] 
    } 
    }, 
    "aggs": { 
    "type_terms": { 
     "terms": { 
     "field": "Type", 
     "size": 10 
     }, 
     "aggs": { 
     "type_term_top_hits": { 
      "top_hits": { 
      "size": 10 
      } 
     } 
     } 
    } 
    } 
} 

希望這有助於

+0

看到這裏你把min_score作爲一個靜態值。所以我的觀點是我不確定文檔分數是什麼,因此我想對它返回的分數執行範圍查詢。 **我可以動態獲取_score並將其引用到查詢中嗎?** –