elasticsearch 多嵌套树与Elasicsearch,elasticsearch,elasticsearch" /> elasticsearch 多嵌套树与Elasicsearch,elasticsearch,elasticsearch" />

elasticsearch 多嵌套树与Elasicsearch

elasticsearch 多嵌套树与Elasicsearch,elasticsearch,elasticsearch,我在MySQL数据库中有一些产品和类别 每种产品都按n类列出。 所有类别都列在树中,因此每个类别在第一级之前都有一个父类别 现在我正在寻找最好的弹性索引结构来查询我的产品,并按类别和子类别进行过滤 我在网上搜索了几天,但是找不到一个好的解决方案。也许这里有人能帮我或给我一个提示 提前谢谢 我建议使用聚合的文档,elasticsearch是面向NoSql文档的。 您可以有如下结构: curl -XPOST "http://192.168.99.100:9200/shop/products" -d'

我在MySQL数据库中有一些产品和类别

每种产品都按n类列出。 所有类别都列在树中,因此每个类别在第一级之前都有一个父类别

现在我正在寻找最好的弹性索引结构来查询我的产品,并按类别和子类别进行过滤

我在网上搜索了几天,但是找不到一个好的解决方案。也许这里有人能帮我或给我一个提示


提前谢谢

我建议使用聚合的文档,elasticsearch是面向NoSql文档的。 您可以有如下结构:

curl -XPOST "http://192.168.99.100:9200/shop/products" -d'
{
   "name": "White shoes",
   "sizes": [
      40,
      41,
      42
   ],
   "info": "bla bla bla",
   "categories": [
      {
         "name": "Social Shoes",
         "parentCat": {
            "name": "Social"
         }
      },
      {
         "name": "Winter Shoes",
         "parentCat": {
            "name": "Winter 2016"
         }
      }
   ]
}'
使用此结构的示例查询,让我们假设我需要一个与父类别Social有关系的产品,该类别称为Social Shoes

curl -XPOST "http://192.168.99.100:9200/shop/products/_search" -d'
{
    "query": {
       "nested": {
          "path": "categories",
          "query": {
              "bool": {
                  "must": [
                     {
                         "match": {
                            "categories.id": 1
                         }
                     },
                     {
                         "nested": {
                            "path": "categories.parentCat",
                            "query": {
                                "bool": {
                                    "must": [
                                       {
                                           "match": {
                                              "categories.parentCat.id": 1
                                           }
                                       }
                                    ]
                                }
                            }
                         }
                     }
                  ]
              }
          }
       }
    }
}'