Java 如何在多个布尔查询的弹性搜索中生成查询
我想用spring框架在elasticsearch中动态生成多个布尔运算的查询 我在elasticsearch中的数据如下Java 如何在多个布尔查询的弹性搜索中生成查询,java,spring,
elasticsearch,aggregates,booleanquery,Java,Spring,
elasticsearch,Aggregates,Booleanquery,我想用spring框架在elasticsearch中动态生成多个布尔运算的查询 我在elasticsearch中的数据如下 { "masterID" : "<id>" "processedData": [ { "string_value": "22", "
{
"masterID" : "<id>"
"processedData": [
{
"string_value": "22",
"key": "a"
},
{
"string_value": "abc",
"key": "s"
},
{
"string_value": "xyz",
"key": "n"
}
]
}
{
“主ID”:”
“处理数据”:[
{
“字符串值”:“22”,
“键”:“a”
},
{
“字符串值”:“abc”,
“键”:“s”
},
{
“字符串值”:“xyz”,
“键”:“n”
}
]
}
我想执行此布尔运算的查询((n=xyz)&&(s=abc))要能够查询数组内部对象,您应该将处理的数据映射为嵌套类型,对象数组不能像您预期的那样工作,因为您无法独立于数组中的其他对象查询每个对象。如果需要能够做到这一点,那么应该使用嵌套数据类型而不是对象数据类型。更改映射后,可以使用bool查询进行嵌套查询,如下所示:
{
"query": {
"nested": {
"path": "processedData",
"query": {
"bool": {
"must": [
{
"match": {
"key": "n"
}
},
{
"match": {
"string_value": "xyz"
}
}
]
}
}
}
}
}
有关更多信息,您可以在此处查看: