我在弹性搜索中有这个模式。
79[
'ID' : '1233',
Geomtries:[{
'doc1' : 'F1',
'doc2' : 'F2'
},
(optional for some of the documents)
{
'doc2' : 'F1',
'doc3' : 'F2'
}]
]
Geometries是一个嵌套元素。 我想得到Geometries中有一个对象的所有文档。
到目前为止尝试过:
"script" : {"script" : "if (Geomtries.size < 2) return true"}
但我得到例外:没有这样的属性GEOMTRIES
答案 0 :(得分:2)
如果您在映射中将字段设置为nested
类型,那么接近的典型doc[fieldkey].values.size()
似乎不起作用。我找到了以下脚本:
{
"from" : 0,
"size" : <SIZE>,
"query" : {
"filtered" : {
"filter" : {
"script" : {
"script" : "_source.containsKey('Geomtries') && _source['Geomtries'].size() == 1"
}
}
}
}
}
注意:您必须使用_source
代替doc
。
答案 1 :(得分:1)
问题在于您访问脚本中的字段的方式,请使用:
function isItAVowel(letter) {
var vowel = ["a", "e", "i", "o", "u"];
if (vowel.indexOf(letter) !=-1) {
document.getElementById("paragraph").innerHTML = "its vowel";
return;
}
document.getElementById("paragraph").innerHTML = "not vowel";
}
isItAVowel("x");
顺便提一下,出于性能原因,我会反规范化并添加GeometryNumber字段。您可以使用transform映射在索引时计算大小。