2013-03-26 3 views
15

Я пытаюсь искать по всем пунктам, которые имеют поле даты внутри диапазона, и он выходит из строя (не возвращает результатов)фильтрация по дате в elasticsearch

Запрос:

{ 
    "query": { 
    "filtered": { 
     "query": { 
     "match_all": {} 
     }, 
     "filter": { 
     "range": { 
      "last_updated": { 
      "from": "2013-01-01 00:00:00" 
      } 
     } 
     } 
    } 
    } 
} 

отображение:

{ 
    "my_doctype": { 
     "_timestamp": { 
      "enabled": "true" 
     }, 
     "properties": { 
      "cards": { 
       "type": "integer" 
      }, 
      "last_updated": { 
       "type": "date", 
       "format": "yyyy-MM-dd HH:mm:ss" 
      } 
     } 
    } 
} 

приводит:

{ 
     took: 1 
     timed_out: false 
     _shards: { 
      total: 1 
      successful: 1 
      failed: 0 
     } 
     hits: { 
      total: 0 
      max_score: null 
      hits: [ ] 
     } 
    } 

Тот же запрос, отфильтрованный диапазоном для целочисленного поля («карты») с числовым значением, отлично работает. Изменение даты до очень раннего старта (1900-01-01 00:00:00) также не показывает результатов.

Что я делаю неправильно?

BTW, я знаю, что в сопоставлении включен _timestamp, но это не поле, которое я фильтрую.

ответ

26

, кажется, хорошо работает для меня:

curl -XPUT localhost:9200/test -d '{ 
    "settings": { 
     "index.number_of_shards": 1, 
     "index.number_of_replicas": 0 
    }, 
    "mappings": { 
     "doc": { 
      "_timestamp": { 
       "enabled": "true" 
      }, 
      "properties": { 
       "cards": { 
        "type": "integer" 
       }, 
       "last_updated": { 
        "type": "date", 
        "format": "yyyy-MM-dd HH:mm:ss" 
       } 
      } 
     } 
    } 
} 
' 
curl -XPOST localhost:9200/test/doc/1 -d '{ 
    "last_updated": "2012-01-01 12:13:14" 
} 
' 
curl -XPOST localhost:9200/test/doc/2 -d '{ 
    "last_updated": "2013-02-02 01:02:03" 
} 
' 
curl -X POST 'http://localhost:9200/test/_refresh' 
echo 
curl -X GET 'http://localhost:9200/test/doc/_search?pretty' -d '{ 
    "query": { 
     "filtered": { 
      "query": { 
       "match_all": {} 
      }, 
      "filter": { 
       "range": { 
        "last_updated": { 
         "gte": "2013-01-01 00:00:00" 
        } 
       } 
      } 
     } 
    } 
} 
' 
+1

Спасибо. Это была опечатка с моей стороны - как неловко. Я собираюсь оставить вопрос здесь и пометить как принятый, для справки, если кто-то должен увидеть тестовый файл. Или имеет смысл удалить его? – eran

+14

@eran Четвертый матч в google для поиска результатов поиска elasticsearch (по крайней мере для меня). Держите его вокруг, это было полезно для меня =) – markdsievers

+0

@Gil вы могли бы быть более конкретным? Какую часть запроса вы говорили? – imotov

Смежные вопросы