目前我需要使用弹性搜索来实现连接,这是方案:
让我们说弹性搜索中的每个条目都有三个字段: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'}
]
我知道我可以做多个查询并在本地进行连接,但我想知道弹性搜索是否可以在内部处理这种情况。
我正在设计一个从头开始支持此功能的映射,所以任何建议都表示赞赏!
提前致谢!
答案 0 :(得分:1)
如果您无法将搜索词组合成单个查询,则可以使用dis_max函数创建子查询联合。
{
"dis_max" : {
"tie_breaker" : 0.7,
"boost" : 1.2,
"queries" : [
{
"term" : { "name" : "john" }
},
{
"term" : { "name" : "mary" }
}
]
}
}