加入弹性搜索

时间:2014-09-12 18:02:24

标签: join elasticsearch

目前我需要使用弹性搜索来实现连接,这是方案:

让我们说弹性搜索中的每个条目都有三个字段:id,name和hobby。并且给出了两个名字(例如John'和#39; Mary'例如),基本上我想让所有John和Mary分享相同的爱好(可能会有所不同)。

以下是可能的结果:

[{id: 1, name: 'john', hobby: 'singing'},
 {id: 2, name: 'mary', hobby: 'singing'},
 {id: 3, name: 'mary', hobby: 'singing'},
 {id: 4, name: 'john', hobby: 'cycling'},
 {id: 5, name: 'john', hobby: 'cycling'},
 {id: 6, name: 'mary', hobby: 'cycling'}
]

我知道我可以做多个查询并在本地进行连接,但我想知道弹性搜索是否可以在内部处理这种情况。

我正在设计一个从头开始支持此功能的映射,所以任何建议都表示赞赏!

提前致谢!

1 个答案:

答案 0 :(得分:1)

如果您无法将搜索词组合成单个查询,则可以使用dis_max函数创建子查询联合。

{
    "dis_max" : {
        "tie_breaker" : 0.7,
        "boost" : 1.2,
        "queries" : [
            {
                "term" : { "name" : "john" }
            },
            {
                "term" : { "name" : "mary" }
            }
        ]
    }
}