首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在ElasticSearch中以相同的类型或索引使用join

如何在ElasticSearch中以相同的类型或索引使用join
EN

Stack Overflow用户
提问于 2018-05-15 14:45:38
回答 1查看 75关注 0票数 0

现在我遇到了一个问题,因为我需要从名为' product‘的类型(或索引)中查询一些数据,并且我有三个参数( $p1,$p2,$p3)可以确定一些分类,然后我需要获取这些分类中的所有产品。我知道如何在MySQL中做到这一点:

代码语言:javascript
复制
select * 
from product 
where catagory in (
    select catagory 
    from product
    where p1 = $p1 and p2=$p2 and p3=$p3
)

我知道我可以在solr中这样做

代码语言:javascript
复制
{!join from=catagory to=catagory}p1:$p1 AND p2:$p2 AND p3:$p3

但我想知道如何在ElasticSearch中做到这一点。

顺便说一句,很抱歉我的台球英语。我非常感谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2018-05-15 19:01:14

在我查看了官方文档后,这可以像这样解决:

  1. 使用连接类型

创建索引

代码语言:javascript
复制
put /product
     {
        "mappings":{
            "cata" : {
                "properties" : {
                     "join_field": { 
                          "type": "join",
                          "relations": {
                            "header": "line" 
                          }
                        }
                }
            }
        }
     } 

  1. 创建标题数据

发布/product

{ "p1":"1","p2":"2","p3":"3","join_field":"header“}返回"_id:"xxx”

  • create a line data

发布/cata?routing=xxx (!路由必须是标头的'_id',因此是下面的'parent‘)

代码语言:javascript
复制
{
    "p1":"1",
    "p2":"1",
    "p3":"1",
    "other":"others...",
    "join_field":{
        "name": "line",
        "parent": "xxx"
  }
}  

  1. 查询数据

post /cata/_搜索

{ "query": { "has_parent" : { "parent_type" : "header", "query" : { "has_child" : { "type" : "line", "query" : { "term" : { "other" : "others..." } } } } } } }

上面的方法解决了我的问题

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50343864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档