ElasticSearch More_Like_This API和嵌套对象属性

时间:2015-01-15 10:30:53

标签: search elasticsearch

我是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"创建一个嵌套的过滤查询。或者更喜欢这个="作者或主题" ?或者我只是错过了一些非常愚蠢的东西?

1 个答案:

答案 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