我一直关注ES部分中此网站Parameterizing Queries in Solr and Elasticsearch的示例。请注意,它是作者正在使用的较旧的ES版本,但我不认为这会影响这种情况。我使用的是ES版本1.6。
我有一个模板{{ES_HOME}}/config/scripts/test.mustache
,看起来像下面的代码段。请注意“查询”中的{{q}}
参数。
{
"query": {
"multi_match": {
"query": "{{q}}",
"analyzer": "keyword",
"fields": [
"description^10",
"name^50",
]
}
},
"aggregations": {
"doctype" : {
"terms" : {
"field" : "doctype.untouched"
}
}
}
}
我使用以下消息正文
发布到http://localhost:9200/forward/_search/template
{
"template": {
"file": "test",
"params": {
"q": "a"
}
}
}
它运行模板,但获得0次点击,并返回以下内容:
{
"took": 3,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 0,
"max_score": null,
"hits": []
},
"aggregations": {
"doctype": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": []
},
}
}
或者,如果我将“a”硬编码到{{q}}所在的位置,并发布到模板,它会正确返回查询“a”的结果。我在设计中做了一些固有的错误吗?
答案 0 :(得分:1)
根据docs,params
对象应位于template
对象之外
{
"template": {
"file": "test"
},
"params": {
"q": "a"
}
}