【问题标题】:Create match query on 2 tables with elasticsearch 2.3使用 elasticsearch 2.3 在 2 个表上创建匹配查询
【发布时间】:2016-11-16 03:51:26
【问题描述】:

因为我可以在 2 个表之间进行查询,所以我有以下表

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

【问题讨论】:

标签: python sql python-2.7 elasticsearch


【解决方案1】:

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

在这种情况下,也许您可​​以将 [Target] 和 [User] 表设置为 [Company] 的子表并查询如下:

"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"
            }
        }
    }
}

【讨论】:

    猜你喜欢
    • 2013-11-10
    • 1970-01-01
    • 1970-01-01
    • 2019-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多