将一个列表传递给Elasticsearch查询模板
问题描述:
我试图将参数列表传递给Elasticsearch中的搜索查询(按条件筛选)。它的工作原理时,它不是一个模板,只需在查询:将一个列表传递给Elasticsearch查询模板
"terms": {
"speaker": ["HAMLET", "KING HENRY IV"]
}
我已经把它放入模板是这样的:
"terms": {
"{{filter1}}": "{{filter1_val}}"}
}
然后调用它像这样:
GET shakespeare/_search/template
{
"id":"template",
"params": {
"filter1": "speaker",
"filter_value1": ["HAMLET", "KING HENRY IV"]
}
}
而且我得到以下错误:
{
"error": {
"root_cause": [
{
"type": "parsing_exception",
"reason": "[terms] query does not support [speaker]",
"line": 1,
"col": 98
}
],
"type": "parsing_exception",
"reason": "[terms] query does not support [speaker]",
"line": 1,
"col": 98
},
"status": 400
}
我已经尝试向模板本身添加括号,例如“{{filter1}}”:[{{filter1_val}}]并添加引号并删除它们,并以“[\”HAMLET \“,\” “KING HENRY IV \”]“,但没有一个工作。
我在做什么错?什么是正确的方法来做到这一点?欢迎任何建议。
谢谢!
答
实测溶液这里:
传递字符串
GET /_search/template
{
"template": {
"query": {
"terms": {
"status": [
"{{#status}}",
"{{.}}",
"{{/status}}"
]
}
}
},
"params": {
"status": [ "pending", "published" ]
}
}
的阵列,其被渲染为:
{
"query": {
"terms": {
"status": [ "pending", "published" ]
}
}