我想在elasticsearch中搜索与id docId的给定文档具有完全相同字段的文档。对于例如用户使用docId调用api,我想过滤文档,以便返回的所有文档都在docId中完成一些参数。
例如,我可以像这样查询Elasticsearch:
POST similarTerms/_search
{
"fields": [
"_id", "title"
] ,
"filter": {
"query": {"match": {
"title": doc[docId].title
}}
},
"size": 30
}
我知道我可以使用docId获取文档然后我可以准备上面的查询,但是我可以以某种方式避免网络跳跃,因为即使是毫秒的时间改进也是我的应用程序非常关注的问题。
由于
答案 0 :(得分:0)
这是"更像是这样的教科书情节" API。引自the docs:
更像这样(mlt)的API允许获取" like"一个 指定文件。这是一个例子:
$ curl -XGET 'http://localhost:9200/twitter/tweet/1/_mlt?mlt_fields=tag,content&min_doc_freq=1'
API只会导致使用moreLikeThis执行搜索请求 查询(http参数将参数与more_like_this匹配 查询)。这意味着请求的主体可以选择包括 搜索API中的所有请求正文选项(aggs,from / to等等) 上)。在内部,更像是这个API相当于执行一个 more_like_this_field查询的布尔查询,每个查询一次 指定的mlt_fields。
如果您计划仅使用一个文档对此进行测试(就像我一样)进行测试,请确保同时设置min_term_freq=0
和min_doc_freq=0
:GET /my_index/locations/1/_mlt?min_term_freq=0&min_doc_freq=0