我正在使用ElasticSearch,而我的查询并不是在寻找我想要的信息。
{
"query":
{
"bool":
{
"must":
[
{
"range":
{
"date":
{
"gte": "2016-04-29 00:00:01",
"lte": "2016-04-29 23:59:59"
}
}
}
]
}
}
}
结果是所有日期都可能,因此,就像查询不存在一样。
POST /Test/date
{
"date": "2016-04-28 13:43:14"
}
我跑的那天不同,所以我也跑了
POST /Test/date
{
"date": "2016-04-29 13:43:14"
}
和
POST /Test/date
{
"date": "2016-04-30 13:43:14"
}
有人可以帮助我吗?
答案 0 :(得分:0)
我想知道这是因为您的时间戳格式不正确。你可以改变:
要:
答案 1 :(得分:0)
这应该有效。基本上,您需要自定义日期格式,否则ES会创建string
字段,而不是date
字段,因为它不会识别格式。
DELETE test
PUT /test
{
"mappings": {
"date": {
"properties": {
"date": {
"type": "date",
"format": "yyyy-mm-dd HH:mm:ss"
}
}
}
}
}
POST /test/date
{
"date": "2016-04-28 13:43:14"
}
POST /test/date
{
"date": "2016-04-29 13:43:14"
}
POST /test/date
{
"date": "2016-04-30 13:43:14"
}
GET /test/date/_search
{
"query": {
"bool": {
"must": [
{
"range": {
"date": {
"gte": "2016-04-29 00:00:01",
"lte": "2016-04-29 23:59:59"
}
}
}
]
}
}
}