2013-10-15 69 views
1

我想按“时间戳”字段(它不是“_timestamp”默认值)进行排序。 “时间戳”字段存储微unixtime在ElasticSearch排序不起作用

"_source": { 
    ... 
    "timestamp": "1381256450000" 
    ... 
} 

在截图中,你可以看到在“排序”(右侧)这个值。最后的记录应该是结果的顶部。但事实并非如此。

截图: ESquery

+0

它来自不同的索引。是仅在索引中排序的记录吗? – phoet

+0

索引映射中是否有'timestamp'? –

+0

@phoet不,他们不是,你可以在屏幕截图 –

回答

1

elasticsearch website

默认情况下,如果没有与字段关联映射的搜索请求将失败。 ignore_unmapped选项允许忽略没有映射并且不能按照它们排序的字段。

如果您想使用它来对结果进行排序,您必须映射该字段。

+0

你能提供一个例子吗?是否有可能将其包含在搜索查询中,或者我应该永久设置它? –

+0

以下2个链接解释了如何设置索引映射:http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping.html http://www.elasticsearch.org/guide/en/ elasticsearch/reference/current/indices-put-mapping.html 映射是永久性设置的,您必须重新索引所有现有文档。 –

+0

如果一个字段至少出现在一个文档中,它会自动提交到合理的默认值映射中。如果您尝试在未映射的字段上排序,则会返回错误。假设您查询多种类型,其中一个类型没有该字段(它从未出现在任何文档中,但您尚未手动提交其映射),则会出现错误。这里似乎不是这种情况? – javanna