我有一个简单的 Elasticsearch 查询,其中包含一个自定义排序无痛脚本,该脚本会影响返回结果的顺序。但是,我注意到该脚本对于所有文档字段(即地图和嵌套字段)无法按预期工作。为了调试这个问题,我对脚本做了一些小改动(见下图)。
从图像中可以看出,结果中的文档的排序分数为 10,即使它包含
my_data
对象。为什么会出现这种情况呢?是否有其他方法来检查此类字段是否存在并正确迭代其键?
我什至尝试避免检查文档中键是否存在,因为我知道索引中的所有文档都包含
my_data
字段,但是当我这样做时,我收到以下错误:No field found for [my_data] in mapping
。该字段在索引映射中正确定义。
对嵌套字段和映射使用
params._source
而不是 doc
可以解决该问题。