Elasticsearch模板不读取参数

时间:2015-07-21 20:21:14

标签: templates elasticsearch mustache

我一直关注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”的结果。我在设计中做了一些固有的错误吗?

1 个答案:

答案 0 :(得分:1)

根据docsparams对象应位于template对象之外

{
    "template": {
        "file": "test"
    },
    "params": {
        "q": "a"
    }
}