2015-06-25 2 views
0

Насколько я понимаю, es поддерживает только эпоху в ms. Мой источник данных - couchbase, а в json-документах есть insertEpoch, который хранится в секундах. Я изо всех сил пытаюсь сделать свой документ для сопоставления для преобразования секунд в ms для меня.Документ отображения Elasticsearch для эпохи в секундах

Вот мое отображение документ:

{ 
    "template" : "cb*", 
    "order" : 10, 
    "mappings" : { 
     "couchbaseCheckpoint" : { 
      "_source" : { 
       "includes" : ["doc.*"] 
      }, 
      "dynamic_templates": [ 
       { 
        "store_no_index": { 
         "match": "*", 
         "mapping": { 
          "store" : "no", 
          "index" : "no", 
          "include_in_all" : false 
         } 
        } 
       } 
      ] 
     }, 
     "couchbaseDoc" : { 
      "_source" : { 
       "includes" : ["meta.*","doc.*"] 
      }, 
      "properties" : { 
       "meta" : { 
        "type" : "object", 
        "include_in_all" : false 
       }, 
       "doc" : { 
        "type" : "nested", 
        "include_in_all" : false, 
        "transform": { 
         "script": "ctx._source['insertEpoch'] = ctx._source['insertEpoch'] * 1000", 
         "params": {}, 
         "lang": "groovy" 
        } 
       } 
      } 
     } 
    } 
} 

Преобразование не происходит.

Новый документ картирование:

{ 
    "template" : "wheepl", 
    "order" : 10, 
    "mappings" : { 
     "couchbaseCheckpoint" : { 
      "_source" : { 
       "includes" : ["doc.*"] 
      }, 
      "dynamic_templates": [ 
       { 
        "store_no_index": { 
         "match": "*", 
         "mapping": { 
          "store" : "no", 
          "index" : "no", 
          "include_in_all" : false 
         } 
        } 
       } 
      ] 
     }, 
     "couchbaseDoc" : { 
      "_timestamp" : { 
       "enabled" : true, 
       "store" : true 
      }, 
      "properties" : { 
       "meta" : { 
        "type" : "object", 
        "include_in_all" : false 
       }, 
       "doc" : { 
        "type" : "object", 
        "include_in_all" : false, 
        "updateEpoch" : { 
         "type" : "date", 
         "format" : "date_time", 
         "numeric_resolution" : "seconds" 
        } 
       } 
      } 
     } 
    } 
} 

Я даже не видеть поле _timestamp, что я должен видеть!

Вот Kibana screenie:

kibana screenshot

Благодаря

+0

Какую версию ES вы используете? Это должно работать в версии 1.6: https://github.com/elastic/elasticsearch/pull/10420 –

+0

@AndreiStefan 1.4.5. –

+0

Я обновлю до 1.6. Хотя, даже глядя на индексированные данные, я все еще вижу свою «updateEpoch» в мс, а не секунды. –

ответ

1

Это работает в 1.6, в соответствии с https://github.com/elastic/elasticsearch/pull/10420. Даже если внутренняя дата сама будет сохранена в миллисекундах, вы можете индексировать ее как секунды, получить ее как секунды, что означает, что вы ее проиндексировали.

Я попробовал простой тест, чтобы увидеть это в действии:

PUT /test_dates 
{ 
    "mappings": { 
    "test": { 
     "properties": { 
     "time_stamp": { 
      "type": "date", 
      "format": "date_time", 
      "numeric_resolution": "seconds" 
     } 
     } 
    } 
    } 
} 

Тестовые данные:

POST /test_dates/test/1 
{ 
    "time_stamp": "9231200" 
} 

Получение его:

"hits": { 
     "total": 1, 
     "max_score": 1, 
     "hits": [ 
     { 
      "_index": "test_dates", 
      "_type": "test", 
      "_id": "1", 
      "_score": 1, 
      "_source": { 
       "time_stamp": "9231200" 
      } 
     } 
     ] 
    } 

Чтобы доказать это работает , запустив эту агрегацию:

GET /test_dates/test/_search?search_type=count 
{ 
    "aggs": { 
    "NAME": { 
     "date_histogram": { 
     "field": "time_stamp", 
     "interval": "second", 
     "format": "yyyy-MM-dd" 
     } 
    } 
    } 
} 

возвращает

"aggregations": { 
     "NAME": { 
     "buckets": [ 
      { 
       "key_as_string": "1970-04-17", 
       "key": 9231200000, 
       "doc_count": 1 
      } 
     ] 
     } 
    } 

Кроме того, ваш шаблон немного неправильно. Это должно быть:

"couchbaseDocument": { 
    "_timestamp": { 
     "enabled": true, 
     "store": true 
    }, 
    "properties": { 
     "meta": { 
      "type": "object", 
      "include_in_all": false 
     }, 
     "doc": { 
      "type": "object", 
      "include_in_all": false, 
      "properties": { 
       "updateEpoch": { 
        "type": "date", 
        "format": "date_time", 
        "numeric_resolution": "seconds" 
       } 
      } 
     } 
    } 
} 
Смежные вопросы