我在索引中有一些文档。我的文件看起来像这样:
{
"_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]} ...
我非常想尝试更改日期格式和字段名称,但不会更改。
答案 0 :(得分:1)
日期格式必须在索引期间提供,而不是在搜索时提供。 您需要在架构中将此字段定义为date core type,然后索引文档。 之后,您可以在该字段上进行聚合。聚合中指定的格式是您希望输出的格式,而不是已索引文档的字段格式。