当前位置: 首页 > 面试题库 >

elasticsearch-painless-操作日期

曾明诚
2023-03-14
问题内容

我正在尝试使用Elasticsearch的脚本语言来操纵日期painless。具体来说,我尝试增加4小时,即14,400秒。

{
  "script_fields": {
    "new_date_field": {
      "script": {
        "inline": "doc['date_field'] + 14400"
      }
    }
  }
}

这抛出 Cannot apply [+] operation to types [org.elasticsearch.index.fielddata.ScriptDocValues.Longs] and [java.lang.Integer].

谢谢


问题答案:

解决方案是使用 .value

{
  "script_fields": {
    "new_date_field": {
      "script": {
        "inline": "doc['date_field'].value + 14400"
      }
    }
  }
}

但是,我实际上想将其用于重新索引,但格式略有不同。这是我在_reindexapi中操纵时间的版本

POST _reindex
{
  "source": {
    "index": "some_index_v1"
  },
  "dest": {
    "index": "some_index_v2"
  },
  "script": {
    "inline": "def sf = new SimpleDateFormat(\"yyyy-MM-dd'T'HH:mm:ss\"); def dt = sf.parse(ctx._source.date_field); def calendar = sf.getCalendar(); calendar.setTime(dt); def instant = calendar.toInstant(); def localDateTime = LocalDateTime.ofInstant(instant, ZoneOffset.UTC); ctx._source.date_field = localDateTime.plusHours(4);"
  }
}

这是可读版本的内联脚本

def sf = new SimpleDateFormat(\"yyyy-MM-dd'T'HH:mm:ss\");
def dt = sf.parse(ctx._source.date_field);
def calendar = sf.getCalendar();
calendar.setTime(dt);
def instant = calendar.toInstant();
def localDateTime = LocalDateTime.ofInstant(instant, ZoneOffset.UTC);
ctx._source.date_field = localDateTime.plusHours(4);

这是无痛支持的功能列表,很痛苦。



 类似资料:
  • 我正在尝试用elasticsearch的脚本语言<code>无痛地操纵日期。具体来说,我试图增加4小时,即14400秒。 这将导致< code >无法对类型[org . elastic search . index . field data . scriptdocvalues . longs]和[java.lang.Integer]应用[ ]操作。 谢谢

  • 问题内容: 注意: 我最初发布此问题的方式有所不同,因此不值得更新,因为阅读后我学到了更多。 需求 搜索文档并根据文档中的嵌套元素计算自定义分数。 结构体 样品查询 孤立无痛 错误 在类型[book]的映射中找不到[topics]的字段 问题 怎么了? 该怎么办? 问题答案: 嵌套文档存储在索引中的不同文档中,因此您不能通过父文档中的doc值来访问它们。您需要使用源文档并导航至属性,如下所示: 孤

  • 对于WebShop中的产品,我有以下ElasticSearch数据结构: 使用以下映射: 我创建了一个Elasticsearch查询,只过滤出正在销售的产品,这意味着:special_price必须低于价格,并且当前日期必须介于special_from_date和special_to_date之间。 这是我创建的无痛脚本: 一旦configurable_children中的一个符合销售产品的条件,

  • 格式化示例 # calendar_textcalendar.py import calendar c = calendar.TextCalendar(calendar.SUNDAY) c.prmonth(2017, 7) # calendar_yeardays2calendar.py import calendar import pprint cal = calendar.Calendar(

  • 操作日志用于显示系统中所有操作信息。 操作日志记录系统中所有操作信息,即记录发起人对某类型的某资源进行的操作以及操作的执行状态等。便于审计用户操作以及出现异常操作后快速定位问题原因等。在项目视图下只显示所属项目为指定项目的日志信息。 入口:在云管平台单击左上角导航菜单,在弹出的左侧菜单栏中单击 “认证与安全/日志审计/操作日志” 菜单项,进入操作日志页面。 查看操作日志 该功能用于查看操作日志详情

  • 本文向大家介绍golang操作elasticsearch的实现,包括了golang操作elasticsearch的实现的使用技巧和注意事项,需要的朋友参考一下 1、前提 1.1 docker 安装elasticsearch 查询elasticsearch 版本 将对应的版本拉到本地 创建一个网络 启动容器 1.2这里过后就可以去写go代码 为了直观搞了个可视化工具 ElisticHD 这里使用do