使用无痛脚本的 elasticsearch return 额外字段

elasticsearch with painless script to return extra fields

我正在关注这个例子https://www.compose.com/articles/how-to-script-painless-ly-in-elasticsearch/ 结果文档中显示了原始字段和计算字段 (some_scores)。

{
    "_index": "sat",
    "_type": "scores",
    "_id": "AV3CYR8JFgEfgdUCQSON",
    "_score": 1,
    "_source": {
        "cds": 1611760130062,
        "rtype": "S",
        "sname": "American High",
        "dname": "Fremont Unified",
        "cname": "Alameda",
        "enroll12": 444,
        "NumTstTakr": 298,
        "AvgScrRead": 576,
        "AvgScrMath": 610,
        "AvgScrWrit": 576,
        "NumGE1500": 229,
        "PctGE1500": 76.85,
        "year": 1516
    },
    "fields": {
        "some_scores": [
            1152
        ]
    }
}

现在我正在使用以下 post body

进行 _search
{
  "query": {
    "match_all": {}
  },
  "script_fields": {
    "some_scores": {
      "script": {
          "lang": "painless",
        "inline": "\"hello\""
      } 
    }
  }
    }

但我得到的结果不包含原始字段;它只包含我硬编码为 hello 的测试字段。我的查询有什么问题吗?

"hits": [
        {
            "_index": "abcIndex",
            "_type": "data",
            "_id": "id_00000025",
            "_score": 1.0,
            "fields": {
                "some_scores": [
                    "hello"
                ]
            }
        }]

使用脚本字段时需要显式传递_source": ["*"]。 我找不到原因,看起来像是某种优化。

{
  "_source": ["*"],
  "query": {
    "match_all": {}
  },
  "script_fields": {
    "some_scores": {
      "script": {
        "lang": "painless",
        "inline": "doc['authorization']+\"hello\""
      }
    }
  }