弹性搜索日期直方图聚合日期格式

时间:2015-02-16 14:24:06

标签: elasticsearch

我在索引中有一些文档。我的文件看起来像这样:

{
  "_index" : "news_collection",
  "_type" : "news",
  "_id" : "54dafbf0e4b0e3cf93676007",
  "_score" : 0.2631625,
  "_source":{"title":"some title","content":"example content"
             ,"publication_date":"Dec 31, 2006 11:11:00 PM"},
 {
  "_index" : "news_collection",
  "_type" : "news",
  "_id" : "54dafbf0e4b0e3cf93676007",
  "_score" : 0.2631625,
  "_source":{"title":"some title","content":"example content"
            ,"publication_date":"Dec 31, 2006 11:11:00 PM"},

我想按月间隔对文档进行分组。我试着做这个代码:

curl -XPOST 'localhost:9200/news_collection/_search?pretty' -d '
{ 
  "aggs" : {
    "articles_over_time" : {
        "date_histogram" : {
            "field" : "publication_date",
            "interval" : "day",
            "format" : "MMM dd, yyyy h:mm:ss aa" 
        }
    }
  } 
}'

但弹性搜索给我一个错误:

 "error" : "SearchPhaseExecutionException[Failed to execute phase [query], all shards failed; shardFailures {[_6V06L2iS4672onsoOixbA]    [news_collection][0]:   ClassCastException[org.elasticsearch.index.fielddata.plain.PagedBytesIndex     FieldData cannot be cast to  

org.elasticsearch.index.fielddata.IndexNumericFieldData]} ...

我非常想尝试更改日期格式和字段名称,但不会更改。

1 个答案:

答案 0 :(得分:1)

日期格式必须在索引期间提供,而不是在搜索时提供。 您需要在架构中将此字段定义为date core type,然后索引文档。 之后,您可以在该字段上进行聚合。聚合中指定的格式是您希望输出的格式,而不是已索引文档的字段格式。