2016-06-09 77 views
0

我正在使用ES 1.4。Elasticsearch facet size

我使用分頁查詢索引(在搜索查詢中使用from和size以便每頁有20個結果),並且我將搜索命中限制設置爲100(所以我不能超過5頁)

我想使用期限方面,但是數場是全球性的,它是在所有搜索命中其可以超過100

這是一個基本的例子:

{ 
    "from": 0, 
    "size": 20, 
    "query": { 
     "match_all": {} 
    } , "facets" : { 
    "tags" : { 
     "terms" : { 
      "field" : "tag" 
     } 
    } 
    } 
} 

有沒有一種方法可以在ES小平面中設置一個限制來僅查看f首先100次點擊?

謝謝!

回答

0

ElasticSeach提供了一個選項,用於將方面限制爲由查詢&過濾器返回的結果。 您可以將global參數設置爲truefalse的每個方面。如果未指定值global設置爲true。 既然你正在尋找只返回前100個結果,你應該一個limit過濾器應用於查詢(limit filter documentation

嘗試修改您的查詢是這樣的:

{ 
    "from": 0, 
    "size": 20, 
    "query": { 
     "filtered" : { 
      "filter" : { 
       "limit" : {"value" : 100} 
      } 
     } 
    }, 
    "facets" : { 
     "tags" : { 
      "terms" : { 
       "field" : "tag" 
      } 
      "global": false 
     } 
    } 
} 

如果你不想任何過濾器適用於你的數據,你可以嘗試使用aggslimit filter documentation)內limit過濾器:

{ 
    "aggs": { 
    "limit_results": { 
     "filter": { 
     "limit": { 
      "value": 100 
     } 
     }, 
     "aggs": { 
     "tags": { 
      "terms": { 
      "field": "tag", 
      "size": 10 
      } 
     } 
     } 
    } 
    } 
} 

的第二個aggs內部的3210參數是返回的標籤組的數量。缺省值是10documentation)。

讓我知道這是否有幫助:)

+0

感謝您的回答。我嘗試了限制過濾器,但是它限制了每個分片的文檔數量,因此如果我有多個分片,相同的搜索查詢可能會返回不同的結果 –