2

我想为具有动态属性的嵌套类型动态创建构面。

假设这些文章在我的索引中并且我正在搜索名称和品牌:

{
    name: iPhone 16GB
    brand: Apple
    type: Smartphone
    attributes: {
        Color: White

    }
}
{
    name: iPad
    brand: Apple
    type: Tablet
    attributes: {
        Color: Black
    }
}
{
    name: Cruzer USB 16GB
    brand: SanDisk
    type: USB-Stick
    attributes: {
        Color: Black
        Capacity: 16GB
        USB-Standard: USB 2.0
    }
}
{
    name: Cruzer USB 16GB
    brand: SanDisk
    type: USB-Stick
    attributes: {
        Color: Red
        Capacity: 16GB
        USB-Standard: USB 3.0
    }
}

现在,如果我正在搜索“Apple”,我希望得到一个包含以下方面的搜索结果:

Brand:
    Apple 2
Type:
    Smartphone 1
    Tablet 1
Color:
    Black 1
    White 1

搜索“16GB”应包括以下方面:

Brand:
    Apple 1
    SanDisk 2
Type:
    Smartphone 1
    USB-Stick 2
Color:
    Black 1
    White 1
    Red 1
Capacity:
    16GB 2
USB-Standard: 
    USB 3.0 1
    USB 2.0 2

同样,每篇文章都可以具有任意属性。

品牌和类型的多面搜索很容易,但我怎么能做到这一点呢?这甚至可以通过弹性搜索实现吗?

我希望你能明白我的意思...

4

1 回答 1

0

试试下面

POST _search
{
   "query": {
      "query_string": {
         "query": "Apple"
      }
   },
   "facets": {
      "tags": {
         "terms": {
            "fields": ["name","brand","type","attributes.Color"]
         }
      }
   }
}
于 2014-11-19T07:06:04.883 回答