将整数数组传递给ElasticSearch模板

时间:2014-11-13 22:16:45

标签: arrays elasticsearch mustache

我正在尝试使用下面的胡子模板将整数数组传递给ElasticSearch模板。

{{#filter5_terms}} 
"terms": {
"{{filter5_name}}": [
"{{#filter5_lt}}", 
"{{.}}",                                
"{{/filter5_lt}}"  ]
}
{{/filter5_terms}}

上面的工作,如果我传递一个字符串数组(例如:[" A"," B"]。但同样的情况是使用int数组[1,2]失败嵌套:NumberFormatException [对于输入字符串:""];错误。

参考:http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-template.html#_passing_an_array_of_strings

如果我遗失任何东西,你可以告诉我吗?

由于 阿尼尔

2 个答案:

答案 0 :(得分:1)

我确实解决了这个问题。 我们可以使用下面的代码将整数数组替换为ElasticSearch查询。

"terms": {
"{{filter5_name}}": {{filter5_lt}}
}

ElasticSearch文档有一个替换字符串数组的例子,我试图对整数数组使用相同的字符串并且它不起作用。

所以我必须使用Mustache模板示例中提供的上述内容。

由于 阿尼尔

答案 1 :(得分:1)

你真的不应该依赖它,因为格式是Mustache的内部实现,因此可能会发生变化。例如,如果您尝试使用mustache.js模拟它,那么您将获得以下内容:

"terms: {
  "property": 3,4
}

要解决此问题,您应该为模板化值添加方括号。所以,你的例子变成了:

"terms": {
  "{{filter5_name}}": [{{filter5_lt}}]
}

这样可以得到你想要的东西。

至少,在mustache.js 2.2.1

中也是如此