我试图在我的沙箱中根据一个字段(' town')在弹性搜索中找到类似的文档(在这种情况下,id为#4; 4'的文档)。在这种情况下的字段)。 所以我写了这个查询,它没有返回命中:
GET _search
{
"query": {
"more_like_this" : {
"fields" : ["town"],
"docs" : [
{
"_index" : "app",
"_type" : "house",
"_id" : "4"
}
],
"min_term_freq" : 1,
"max_query_terms" : 12
}
}
}
在我的数据集中,#4号文件位于一个名叫巴黎的城镇。因此,当我运行以下查询时,文档#4处于命中结果中,其他结果很多:
GET _search
{
"query": {
"match": { "town": "Paris" }
}
}
我不明白为什么' more_like_this'查询不返回结果,而其他文档的字段具有相同的值。 我确切地说,我使用'""":{}'来检查_index,_type和_id参数。查询。
它看起来像这个官方弹性搜索资源的第二个例子:http://www.elastic.co/guide/en/elasticsearch/reference/1.5/query-dsl-mlt-query.html
我的' more_like_this'出了什么问题。查询?
答案 0 :(得分:2)
我假设你的文件数量较少。 在这种情况下,您可以将min_doc_freq设为0并重试。 也可以使用POST进行搜索 -
POST _search
{
"query": {
"more_like_this" : {
"fields" : ["town"],
"docs" : [
{
"_index" : "app",
"_type" : "house",
"_id" : "4"
}
],
"min_term_freq" : 1,
"max_query_terms" : 12,
"min_doc_freq" : 1
}
}
}