我在ElasticSearch中有一个索引叫做 professor
如果是交叉场,我需要“和”条件
对于相同的字段数组,我需要
我需要搜查一下 BusinessArea
哪个是 Research
或者 Accounting
这是字段数组(或)语句
1.a BusinessArea
必须办理登机手续 name
以及 parentname
和
我需要搜查一下 Role
是 Developer
或者 Tester
条件这是字段数组(or)语句
和
我需要搜查一下 Location
是 NY
(&)条件
test=[ { 'id': '1', 'name': 'Group1', 'BusinessArea': [ { 'id': '14', 'name': 'Accounting', 'parentname': 'Finance'}, { 'id': '3', 'name': 'Research', 'parentname': 'R & D' } ], 'Designation': [ { 'id': '16', 'name': 'L1' }, { 'id': '20', 'name': 'L2' }, { 'id': '25', 'name': 'L2' }, ] }, { 'id': '2', 'name': 'Group1', 'BusinessArea': [ { 'id': '14', 'name': 'Research', 'parentname': '' }, { 'id': '3', 'name': 'Accounting', 'parentname': '' } ], 'Role': [ { 'id': '5032', 'name': 'Tester' }, { 'id': '5033', 'name': 'Developer' } ], 'Designation': [ { 'id': '16', 'name': 'L1' }, { 'id': '20', 'name': 'L2' }, { 'id': '25', 'name': 'L2' }, ] }, { 'id': '1', 'name': 'Group1', 'BusinessArea': [ { 'id': '14', 'name': 'Research' }, { 'id': '3', 'name': 'Engineering', 'parentname': '' } ], 'Role': [ { 'id': '5032', 'name': 'Developer' }, { 'id': '5033', 'name': 'Developer', 'parentname': '' } ], 'Designation': [ { 'id': '16', 'name': 'L1' }, { 'id': '20', 'name': 'L2' }, { 'id': '25', 'name': 'L2' } ] } ]
查询如下,除了
1.a
content_search = es.search(index="professor", body={
"query": {
"bool": {
"must": [
{
"terms":
{
"BusinessArea.name.keyword": ["Research","Accounting"]
}
},
{
"terms":
{
"Role.name.keyword": ["Developer","Tested"]
}
}
]
},
"filter": [
{
"term": {
"Location.keyword": "NY"
}
}
]
} })
1条答案
按热度按时间e4yzc0pl1#
您可以使用multi-match查询和bool查询的组合
下面的搜索查询将适用于您的1(a)条件,它将搜索(
Research
或者Accounting
)在BusinessArea.name
以及BusinessArea.parentname
领域搜索查询:
搜索结果: