使用elasticsearch 2.3在2个表上创建匹配查询

时间:2016-11-16 03:51:27

标签: python sql python-2.7 elasticsearch

由于我可以在两个表之间进行查询,因此我有以下表格

Company:
- id
- name
- domain
- timestamp

Target:
- id
- name
- domain
- company
- website
- company_id
- timestamp

User:
- id
- firstName
- lastName
- email
- company_id
- timestamp

我需要在目标域和属于该公司的用户邮件之间进行匹配。

我正在使用带有python 2.7的elasticsearch-py库来处理ElasticSearch 2.3

1 个答案:

答案 0 :(得分:0)

Elasticsearch中的类型不能像SQL一样相互连接。但是你可以使用父子关系让类型相互关联。

在这种情况下,您可以将[目标]和[用户]表格设置为[公司]的子项,并查询如下:

"query": {
    "bool": {
        "must": [
           {
               "has_child": {
                   "query": {
                       "match": {
                          "domain": "test domain"
                       }
                   },
                   "child_type" : "Target"
               }
           },
           {
               "has_child": {
                   "query": {
                       "match": {
                          "email": "test email"
                       }
                   },
                   "child_type" : "User"
               }
           }
        ],
        "filter" : {
            "term": {
               "_type": "Company"
            }
        }
    }
}