我是ES的新手,请原谅我,如果这是我尚未发现的常见情况。
我有一个包含文档的索引,每个文档都可以与特定事件相关,所以我在每个文档中都有一个嵌套的事件对象。活动 - >文件是一对多的关系。
当我显示单个文档时,我想显示"更像是这样"更像是 - 这实际上代表来自同一会议,同一作者或同一主题的更多文档。 作者和主题工作正常,但虽然mlt_fields接受" event.title"作为一个字段名称,它无法从同一事件中找到任何文档。
我的映射:
{
"myindex": {
"mappings": {
"myitem": {
"properties": {
"authors": {
"type": "string",
"analyzer": "keyword"
},
"id": {
"type": "integer"
},
"title": {
"type": "string"
},
"topics": {
"type": "string",
"analyzer": "keyword"
},
"event": {
"type": "nested",
"properties": {
"title": {
"type": "string",
"analyzer": "keyword"
},
...
}
}
}
}
}
}
}
我的查询:
GET /myindex/mydoc/7/_mlt?mlt_fields=event.title&min_doc_freq=1&min_term_freq=1&percent_terms_to_match=0
{
"from": 0,
"size": 5
}
我的结果:
{
...
"hits": {
"total": 0,
"max_score": null,
"hits": []
}
}
我怀疑这是一个嵌套的东西,所以我必须使用" event = my_event"创建一个嵌套的过滤查询。或者更喜欢这个="作者或主题" ?或者我只是错过了一些非常愚蠢的东西?
答案 0 :(得分:1)
是的,您必须执行嵌套查询来查询嵌套字段:
由于嵌套文档始终屏蔽到父文档,因此永远不能在嵌套查询的范围之外访问嵌套文档。
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-nested-type.html http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-nested-query.html