如何让elastic4s存储_timestamp字段?

How to make elastic4s store _timestamp field?

我可以像这样在映射上启用时间戳:

"someType" as (
   "someField" typed StringType
) timestamp true

但是为了能够在使用 "fields": ["_timestamp"] 搜索时检索到它,还需要将 store 属性设置为 true。但是如果我这样做:

"someType" as (
   "someField" typed StringType,
   "_timestamp" typed LongType/DateType store true
) timestamp true

那么就不是_search返回的了:

GET /myIndex/someType/_search 
{
  "fields": ["_timestamp"],
  "query" : {
     "match_all" : {}
    }
}

生成的映射如下所示:

"someType": {
    "dynamic": "dynamic",
    "_timestamp": {
       "enabled": true
    },
    "properties": {
        "_timestamp": {
          "store": "yes",
          "type": "long"
       }
    }

}

但我感觉应该是这样的:

"someType": {
    "dynamic": "dynamic",
    "_timestamp": {
       "enabled": true,
       "store": true
    },
    "properties": {
        "_timestamp": {
          "store": "yes",
          "type": "long"
       }
    }
    }

这不能使用 elastic4s Dsl 完成,因为它没有对名为 _timestamp 的字段进行特殊处理,因此该字段转到属性而不是该映射中的字段...

Elastic4s 版本 1.5.7 允许您像这样设置时间戳:

create index("myindex") mappings(
  mapping name "foo" timestamp {
    timestamp enabled true format "qwerty" store true path "somepath"
  }
)

路径、格式和存储是可选的。