【发布时间】:2021-02-17 23:19:51
【问题描述】:
- 我需要搜索 BusinessArea,即 Research 或 Accounting,这是字段数组 (OR) 语句
- 我需要搜索角色是开发人员或测试人员条件这是字段数组(OR)语句
- 我想获取 BusinessArea、designationNames、Role 的 masterid 计数,即所有名称
- 名称过滤器为“Group1”
下面是字典
test= [ { 'masterid': '1', 'name': 'Group1', 'BusinessArea': [ 'Accounting','Research'], 'Designation': [ 'L1' 'L2' ] }, { 'masterid': '2', 'name': 'Group1', 'BusinessArea': ['Research','Accounting' ], 'Role': [ { 'id': '5032', 'name': 'Tester' }, { 'id': '5033', 'name': 'Developer' } ], 'Designation': [ 'L1' 'L2' ]}, { 'masterid': '3', 'name': 'Group1', 'BusinessArea': [ 'Engineering' ], 'Role': [ { 'id': '5032', 'name': 'Developer' }, { 'id': '5033', 'name': 'Developer', 'parentname': '' } ], 'Designation': [ 'L1' 'L2' ]}]
下面是聚合函数
{
"size": 0,
"aggs": {
"countNames": {
"terms": {
"field": "BusinessArea.keyword"
}
},
"designationNames": {
"terms": {
"field": "Designation.keyword"
}
},
"Role": {
"terms": {
"field": "Role.name.keyword"
}
}
}
}
下面是过滤查询
{
"query": {
"bool": {
"must": [
{
"terms": {
"BusinessArea.keyword": [
"Research",
"Accounting"
]
}
},
{
"terms": {
"Role.name.keyword": [
"Developer",
"Tester"
]
}
}
]
}
}
}
"filter": [
"term": {
"name.keyword": "Group1"}]
我需要合并两者的查询和输出
【问题讨论】:
-
我尝试合并 RequestError: RequestError(400, 'parsing_exception', 'Expected [START_OBJECT] but found [START_ARRAY]')
-
search=es.search(index="4", body=quer)
标签: python elasticsearch elasticsearch-aggregation elasticsearch-query