哪种结构更适合在elasticsearch中搜索库存?

时间:2012-04-16 01:29:04

标签: elasticsearch

哪种结构更适合查询:

人有5个香蕉和1个苹果。

人有5个香蕉或1个苹果。

嵌套?

{
    id: 1,
    has: 
    [
        {
            'name': 'banana',
            'quantity': 5,
        },
        {
            'name': 'apple',
            'quantity': 1,
            'species': 'gala'
        }
    ]
}

或固定插槽?

{
    id: 1,
    slot1: {
            'name': 'banana',
            'quantity': 5,
            },
    slot2: {
            'name': 'apple',
            'quantity': 1,
            'species': 'gala'
            }
    slot3: null,
    slot4: null
}

2 个答案:

答案 0 :(得分:1)

嵌套方法更简单:你可以做一个简单的嵌套查询[1],而不必做slot1或slot2或者...将每个“槽”索引为文档甚至更简单,如果Person没有其他字段。

[1] http://www.elasticsearch.org/guide/reference/query-dsl/nested-query.html

答案 1 :(得分:0)

我会选择:

{
  id: 1,
  banana: {
        'quantity': 5,
  },
  apple: {
        'quantity': 1,
        'species': 'gala'
  }
}

然后查询很简单。通过query string query,您的查询将如下所示:

banana.quantity:5 AND apple.quantity:1

banana.quantity:5 OR apple.quantity:1