dsl查询,从字典数组中查找元素

ocebsuys  于 2021-06-14  发布在  ElasticSearch
关注(0)|答案(2)|浏览(425)

我在ElasticSearch中有一个索引叫做 professor 如果是交叉场,我需要“和”条件
对于相同的字段数组,我需要
我需要搜查一下 BusinessArea 哪个是 Research 或者 Accounting 这是字段数组(或)语句

我需要搜查一下 RoleDeveloper 或者 Tester 条件这是字段数组(or)语句

我需要搜查一下 LocationNY (&)条件

test = [{ 'id': '1', 'name': 'Group1', 'BusinessArea': [ { 'id': '14', 'name': 'Accounting' }, { 'id': '3', 'name': 'Accounting' } ],'Designation': [ { 'id': '16', 'name': 'L1' }, { 'id': '20', 'name': 'L2' }, { 'id': '25', 'name': 'L2' }, ] }, { 'id': '2', 'name': 'Group1', 'BusinessArea': [ { 'id': '14', 'name': 'Research' }, { 'id': '3', 'name': 'Accounting' } ], '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' } ], 'Role': [ { 'id': '5032', 'name': 'Developer' }, { 'id': '5033', 'name': 'Developer' } ], 'Designation': [ { 'id': '16', 'name': 'L1' }, { 'id': '20', 'name': 'L2' }, { 'id': '25', 'name': 'L2' }] }]

下面是查询,第三个得到了,怎么添加 1 and 2 ```
content_search = es.search(index="professor", body={
"query": {
"bool": {
"must": {
"match_all": {}
},
"filter": [
{
"term": {
"Location.keyword": "NY"
}
}
]
}
}
})
content_search ['hits']['hits']

dm7nw8vv

dm7nw8vv1#

可以像这样使用bool查询:

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"
          }
        }
      ]
  }
})
ilmyapht

ilmyapht2#

我需要搜索的位置是纽约(&)条件
我没有添加这个条件,因为没有名为 Location 在您的示例数据中
请尝试以下查询:
搜索查询:

{
  "query": {
    "bool": {
      "must": [
        {
          "terms": {
            "BusinessArea.name.keyword": [
              "Research",
              "Accounting"
            ]
          }
        },
        {
          "terms": {
            "Role.name.keyword": [
              "Developer",
              "Tester"
            ]
          }
        }
      ]
    }
  }
}

搜索结果:

"hits": [
      {
        "_index": "stof_64386038",
        "_type": "_doc",
        "_id": "2",
        "_score": 2.0,
        "_source": {
          "id": "2",
          "name": "Group1",
          "BusinessArea": [
            {
              "id": "14",
              "name": "Research"
            },
            {
              "id": "3",
              "name": "Accounting"
            }
          ],
          "Role": [
            {
              "id": "5032",
              "name": "Tester"
            },
            {
              "id": "5033",
              "name": "Developer"
            }
          ],
          "Designation": [
            {
              "id": "16",
              "name": "L1"
            },
            {
              "id": "20",
              "name": "L2"
            },
            {
              "id": "25",
              "name": "L2"
            }
          ]
        }
      },
      {
        "_index": "stof_64386038",
        "_type": "_doc",
        "_id": "3",
        "_score": 2.0,
        "_source": {
          "id": "1",
          "name": "Group1",
          "BusinessArea": [
            {
              "id": "14",
              "name": "Research"
            },
            {
              "id": "3",
              "name": "Engineering"
            }
          ],
          "Role": [
            {
              "id": "5032",
              "name": "Developer"
            },
            {
              "id": "5033",
              "name": "Developer"
            }
          ],
          "Designation": [
            {
              "id": "16",
              "name": "L1"
            },
            {
              "id": "20",
              "name": "L2"
            },
            {
              "id": "25",
              "name": "L2"
            }
          ]
        }
      }
    ]

相关问题