elasticsearch - 查询到 elasticsearch v6.0.1 时,将新字段添加到 _source 对象中的无痛脚本
问题描述
我有一个带有一个属性(id:整数)的字段映射的索引。当我查询该索引时,我能够得到正确的响应。现在,我想在查询时使用无痛脚本在 _source 对象中添加一个额外的字段。elasticsearch 版本为 6.0.1。
我已经尝试在查询块中添加脚本作为字段。但它会抛出一个错误:
{
"error": {
"root_cause": [
{
"type": "parsing_exception",
"reason": "[term] malformed query, expected [END_OBJECT] but found [FIELD_NAME]",
"line": 7,
"col": 7
}
],
"type": "parsing_exception",
"reason": "[term] malformed query, expected [END_OBJECT] but found [FIELD_NAME]",
"line": 7,
"col": 7
},
"status": 400
}
GET 20190719_candidate/candidate/_search
{
"min_score": 0.001,
"query": {
"term": {
"id": 1234
},
"script": {
"script": {
"inline": "doc['field_1'] = 'field_1_value'"
}
}
},
"from": 0,
"size": 20
}
_source 对象的预期结果是:
{
"id": "1234567",
"field_1": "field_1_value"
}
解决方案
您缺少结构:
GET 20190719_candidate/candidate/_search
{
"min_score": 0.001,
"query": {
"term": {
"id": 1234
},
"script_fields": {
"test1":{
"script": {
"lang": "painless",
"source": "'field_1_value'"
}
}
}
},
"from": 0,
"size": 20
}
看看这个例子:
GET /_search
{
"query" : {
"match_all": {}
},
"script_fields" : {
"test1" : {
"script" : {
"lang": "painless",
"source": "doc['price'].value * 2"
}
},
"test2" : {
"script" : {
"lang": "painless",
"source": "doc['price'].value * params.factor",
"params" : {
"factor" : 2.0
}
}
}
}
}
推荐阅读
- r - 基于多个条件匹配两个数据帧的行
- python - 你好!如何使这个简单?我是 python 新手 :)
- python - Pytesseract - 图像上的 OCR,带有不同颜色的文本
- regex - 如何编写 SED 脚本以使用正则表达式根据用户输入替换文件中存在的版本代码
- javascript - 在另一台机器上启动反应应用程序
- coq - 错误“战术失败:关系 (fun xy : BloodType => x <> y) 不是声明的自反关系。” 在证明关于函数的定理时
- architecture - 消息持久化系统设计题
- angular - 如何通过 IP 地址访问 API
- python - ValueError:无法将 DataFrame 与类型的实例合并
- python - win10如何卸载python包