新手在这里。我有两个索引:/ items和/ categories包含与此类似的数据:
#Items:
{ id:1, name: "banana", categories: [1] },
{ id:2, name: "coconut", categories: [1] },
{ id:3, name: "smoothie", categories: [1, 2] }
#Categories
{ id:1, name: "Apple" },
{ id:2, name: "Banana" }
我想使用 bana 作为查询字符串来创建查询,并且我应该返回项目1和3。它不应返回类别对象。 ID 1是因为名称匹配,ID 3是因为其类别与名称匹配。
如何构造这样的查询?
我当前的查询不返回项3
,就像
GET /items/_search
{
"query": {
"bool":{
"must":{
"query_string":{
"query":"bana"
}
}
}
}
}
答案 0 :(得分:0)
是否有必要为此创建两个索引?也许直接在 Item 索引中使用name
来替换ID:
{ id:1, name: "banana", categories: ["Apple"] }
由于索引将具有其自己的字典,因此不会引起额外的磁盘空间。
如果确实需要连接两个索引,也许您想尝试Parent-Child Relationship,但是将来会弃用,并替换为:join datatype,这样也可以将数据保存在一个索引中。