簡體   English   中英

遠程查詢未返回的Elasticsearch構面

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM