[英]Elasticsearch facets not returned with a ranged query
我正在存儲看起來像這樣的文檔:
{
"title" : "My title",
"posted_date" : "2014-03-04T04:00:12+00:00",
"category" : ["cat1", "cat2"],
}
然后,我將使用各種側邊欄過濾器顯示這些列表,例如類別和日期(按年,按月)。 根據用戶選擇的選項,結果查詢可能最終看起來像:
{
"query": {
"range": {
"posted_date": {
"gte": "2014-01-01T00:00:00+00:00",
"lte": "2015-01-01T00:00:00+00:00"
}
},
"filtered": {
"filter": {
"and": {
"filters": [
{
"term": {
"category": "cat1"
}
}
]
}}}}}
這似乎完全按預期工作,除了當我嘗試添加構面時,我可以在日期等旁邊加上小數字(1)等:
{
"query": {
"range": {
"posted_date": {
"gte": "2014-01-01T00:00:00+00:00",
"lte": "2015-01-01T00:00:00+00:00"
}
},
"filtered": {
"filter": {
"and": {
"filters": [
{
"term": {
"category": "fiction"
}
}
]
}
}
}
},
"facets": {
"bymonth": {
"date_histogram": {
"field": "posted_date",
"interval": "month"
}
},
"byyear": {
"date_histogram": {
"field": "posted_date",
"interval": "year"
}
}
}
}
僅當我不在查詢中包括范圍時,此方法才有效。 如果范圍在那兒,我就不會得到任何回報。 只是沒有結果。 即使我將刻面更改為另一個術語而不是日期,我也一無所獲。
范圍查詢和構面之間是否存在不兼容的問題? 這些查詢的結構方式是否還有其他問題,使其無法按照我認為的方式進行?
我認為您需要在這里facet_filter 。
{
"facets": {
"facet1": {
"terms_stats": {
"key_field" : "name",
"value_field": "count"
},
"facet_filter": {
"range": {
"filed": {
"from": 0,
"to": 20
}
}
}
}
}
}
您更新的查詢將如下所示:
{
"query": {
"filtered": {
"filter": {
"and": {
"filters": [
{
"term": {
"category": "fiction"
}
}
]
}
}
}
},
"facets": {
"bymonth": {
"date_histogram": {
"field": "posted_date",
"interval": "month"
},
"facet_filter": {
"range": {
"posted_date": {
"gte": "2014-01-01T00:00:00+00:00",
"lte": "2015-01-01T00:00:00+00:00"
}
}
}
},
"byyear": {
"date_histogram": {
"field": "posted_date",
"interval": "year"
}
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.