如何使Elasticsearch date_histogram facet对嵌套项有效

时间:2013-11-04 21:16:54

标签: elasticsearch kibana

我正在使用Kibana 3来查询我的Elasticsearch服务器。 Kibana提供了date_histogram可视化面板,用于显示我为产品收集的价格。每个产品可以包含任意数量的价格和相应的日期。价格是作为每个文档中的嵌套字段实现的。

Kibana创建以下查询,该问题在应用于所有文档时效果正常。

curl -XGET 'http://localhost.com:9200/vendor2/_search?pretty' -d '{
  "facets": {
    "1": {
      "date_histogram": {
        "key_field": "Prices.Fetched",
        "value_field": "Prices.Price",
        "interval": "1m"
      },
      "nested": "Prices",
      "facet_filter": {
        "fquery": {
          "query": {
            "filtered": {
              "query": {
                "query_string": {
                  "query": "*"
                }
              },
              "filter": {
                "bool": {
                  "must": [
                    {
                      "match_all": {}
                    },
                    {
                      "bool": {
                        "must": [
                          {
                            "match_all": {}
                          }
                        ]
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    }
  },
  "size": 0
}'

当我尝试使用date_histogram来显示单个产品的价格变动时,问题出现了。 Kibana提供了过滤到某个文档的功能。例如,基于其id / sku。

然而,date_histogram facet保持为空。

这是一个例子......任何人都可以告知查询可能有什么问题吗?

curl -XGET 'http://localhost.com:9200/vendor2/_search?pretty' -d '{   "facets": {
    "1": {
      "date_histogram": {
        "key_field": "Prices.Fetched",
        "value_field": "Prices.Price",
        "interval": "1m"
      },
      "nested": "Prices",
      "facet_filter": {
        "fquery": {
          "query": {
            "filtered": {
              "query": {
                "query_string": {
                  "query": "*"
                }
              },
              "filter": {
                "bool": {
                  "must": [
                    {
                      "match_all": {}
                    },
                    {
                      "fquery": {
                        "query": {
                          "field": {
                            "sku": {
                              "query": "\"AZF78FH77\""
                            }
                          }
                        },
                        "_cache": true
                      }
                    },
                    {
                      "bool": {
                        "must": [
                          {
                            "match_all": {}
                          }
                        ]
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    }   },   "size": 0 }'

1 个答案:

答案 0 :(得分:0)

问题是您在查询中包含的双引号(请注意查询中的转义引号)。这将导致ElasticSearch查找“AZF78FH77”的SKU,而不是'AZF78FH77'

尝试在查询框中不带引号的Kibana中查询。