我正在建立一个Elasticsearch搜索界面。我的方法是构建初始查询对象,然后根据用户输入更改它。
在我的对象的过滤器部分,我有
'filter':{
'and':[
{
'term' : {
'terms.region.slug' : 'texas'
}
},
{
...
},
]
}
在我尝试改变它之前,我至少看看我是否可以访问它。
console.log( filter.and[0].term.terms.region.slug );
但是,我得到了:
未捕获的TypeError:无法读取属性' region'未定义的
也许是因为解释器期望点符号指向一个对象的级别,而json的这部分去往ES ...而不是一个对象(虽然它引用一个对象?这是我感到困惑的地方。
编辑:作为参考,这就是Elasticsearch中单个结果的术语对象。
答案 0 :(得分:2)
这是因为您使用的绑定(即'terms.region.slug'
)与点符号不兼容。使用点表示法要求绑定可以作为标识符进行解析。但是,括号表示法等同于点表示法,允许使用任何绑定。
console.log( filter.and[0].term['terms.region.slug'] );