2013-03-26 39 views
15

Tôi đang cố gắng để tìm kiếm tất cả các mục có một lĩnh vực ngày bên trong một phạm vi, và nó không thành công (lợi nhuận không có kết quả)lọc theo ngày trong elasticsearch

Truy vấn:

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

các bản đồ:

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

kết quả trong:

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

Truy vấn tương tự được lọc theo phạm vi cho trường số nguyên ("thẻ") với giá trị số hoạt động tốt. Thay đổi ngày bắt đầu rất sớm (1900-01-01 00:00:00) cũng không hiển thị kết quả.

Tôi đang làm gì sai?

BTW, tôi biết tôi đã bật _timestamp trong ánh xạ, nhưng đó không phải là trường tôi đang lọc theo.

Trả lời

26

vẻ khi được làm việc tốt với tôi:

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

Cảm ơn bạn. Đó là một lỗi đánh máy về phần của tôi - làm thế nào xấu hổ. Tôi sẽ để lại câu hỏi ở đây và đánh dấu là được chấp nhận, để tham khảo nếu ai đó cần xem testcase. Hay nó có ý nghĩa hơn để xóa nó? – eran

+14

@eran Thứ tư trận đấu trong google cho "tìm kiếm ngày elasticsearch (ít nhất là cho tôi). Giữ nó xung quanh, nó rất hữu ích cho tôi =) – markdsievers

+0

@Gil bạn có thể cụ thể hơn? Phần nào của truy vấn bạn đang nói về? – imotov

Các vấn đề liên quan