首页 文章

Elastich搜索:more_like_this运算符不返回任何命中

提问于
浏览
0

我试图在我的沙箱中根据字段(本例中为“town”字段)在弹性搜索中找到类似文档(在本例中为id为'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'查询不返回结果,而有其他文档有一个具有相同值的字段 . 我确切地说,我使用'“match_all”:{}'查询来检查_index,_type和_id参数 .

它看起来像这个官方弹性搜索资源的第二个例子:http://www.elastic.co/guide/en/elasticsearch/reference/1.5/query-dsl-mlt-query.html

我的'more_like_this'查询出了什么问题?

1 回答

  • 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
            }
        }
    }
    

相关问题