【问题标题】: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"
}
}
}
}