【发布时间】:2017-07-13 15:03:33
【问题描述】:
我的文档如下所示:
{"foo" : "blah blah blah",
"bar" : "bla bla bla",
"baz" : [{"href" : "someid"}, {"href" : "otherid"}, ...],
... }
我想进行搜索,以查找 id 出现在 href 子文档之一中的所有文档。如果我在映射中将baz.href设置为不分析,我可以用词条查询搜索baz.href。
但是,我真正想要的是能够搜索此 ID,无论它出现在哪里。它可能位于baz.href、quux.href 或whatever.href。在_all 中搜索是完全可以接受的。
但是,我就是无法完成这项工作。我从来没有得到任何结果,除非我完全搜索 baz.href。
我尝试在映射中将include_in_all 设置为baz,但无济于事。我尝试在baz.href 上设置它,但也没有用。
我知道我可以在顶层的单独 all_hrefs 字段中复制 ID,但这会不必要地炸毁文档,而且看起来很难看。参考列表可能非常大。我还可以解析我自己的映射并在那里找到所有hrefs,这样我就可以在查询中明确列出所有href 字段,但随着数据模型的增长,最终将不再扩展。
帮助?
更新:datasets 字段的映射(以及包含hrefs 的所有其他字段如下所示):
"datasets" : {
"properties" : {
"href" : {
"include_in_all" : true,
"index" : "not_analyzed",
"type" : "string"
}
},
"type" : "nested"
},
我试过删除nested,删除include_in_all,但没有区别。当我有nested 时,我可以使用嵌套查询,但path 必须设置为datasets,因为* 失败,因为并非所有字段都包含嵌套对象。
【问题讨论】:
标签: elasticsearch nested