我想为一个文档存储多个数值范围(integer_range数组)。每组范围都与一个单元(文本字段)相关联。
下面是一个例子:
PUT nested_index/_doc/1
{
"operating_temperature": [
{
"unit": "kelvin",
"value": [
{
"gte": 300,
"lte": 500
}
]
},
{
"unit": "celcius",
"value": [
{
"gte": 0,
"lte": 30
},
{
"gte": 70,
"lte": 200
}
]
}
]
}
PUT nested_index/_doc/2
{
"operating_temperature": [
{
"unit": "celcius",
"value": [
{
"gte": 30,
"lte": 400
}
]
}
]
}
现在我想查询一个operating_temperature范围为400到450开尔文的文档。我应该从这个查询中只得到文档1。
我这样构造我的查询:
GET nested_index/_search
{
"query": {
"bool": {
"must": [
{
"nested": {
"path": "operating_temperature",
"query": {
"term": {
"operating_temperature.unit": {
"value": "kelvin"
}
}
}
}
},
{
"nested": {
"path": "operating_temperature",
"query": {
"range": {
"operating_temperature.value": {
"gte": 400,
"lte": 450
}
}
}
}
}
]
}
}
}
这不会返回任何匹配项。我不明白为什么它不工作。
1条答案
按热度按时间oewdyzsn1#
字段operating_temperature.value应该是数组?如果不是数组,我建议避免使用数组来方便查询。问题是您还没有确定范围查询中的字段(value.gte和value.lte)。