我对Elasticsearch中的过滤器有所了解。我试图构建一个过滤器来搜索具有嵌套数组的索引。
"bParams": {
"bParamList": [
{
"bParamId": 298,
"year": 2008,
"quarter": 4,
"value": 239698
},
{
"bParamId": 298,
"year": 2009,
"quarter": 4,
"value": 453
},
{
"bParamId": 298,
"year": 2007,
"quarter": 4,
"value": 190000
},
{
"bParamId": 304,
"year": 2009,
"quarter": 4,
"value": 7000
}
]
}
请求是:
{
"query": {
"filtered": {
"filter": {
"bool": {
"must": [
{
"term": {
"bParams.bParamList.year": [ 2007 ]
}
},
{
"range": {
"bParams.bParamList.value": {
"from": 1,
"to": 453
}
}
},
{
"term": {
"bParams.bParamList.bParamId": [ 304 ]
}
}
]
}
}
}
}
}
我希望查询不会返回任何结果,但会返回结果。我知道有些元素具有适当的价值。我需要同时考虑所有请求参数。
答案 0 :(得分:0)
您需要使用nested
- 映射,并且您必须重新索引才能添加它。
没有nested
,索引的内容基本上与此相同:
{
"bParams": {
"bParamList": {
"bParamId": [298, 298, ...],
"year": [2008, 2009, ...],
"quarter": [4, 4, ...],
"value", [239698, 453, ...],
}
}
}