gpt4 book ai didi

search - ElasticSearch More_Like_This API 和嵌套对象属性

转载 作者:行者123 更新时间:2023-11-29 02:57:07 25 4
gpt4 key购买 nike

我对 ES 还很陌生,如果这是我还没有发现的常见情况,请原谅我。

我有一个包含文档的索引,每个文档都可以与特定事件相关,所以我在每个文档中都有一个嵌套的事件对象。 Event -> Document 是一对多的关系。

当我显示单个文档时,我想显示“More like this”,其中 more-like-this 实际上表示来自同一 session 、同一作者或同一主题的更多文档。作者和主题工作正常,但尽管 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”或 more-like-this =“author or topic”创建一个嵌套的过滤查询?或者我只是错过了一些非常愚蠢的东西?

最佳答案

是的,你必须做一个嵌套查询来查询嵌套字段:

Because nested docs are always masked to the parent doc, the nested docs can never be accessed outside the scope of the nested query.

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

关于search - ElasticSearch More_Like_This API 和嵌套对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27961412/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com