Elasticsearch : more_like_this 运算符 returns 没有命中
Elastich search : more_like_this operator returns no hit
我试图在我的沙箱中基于一个字段(在本例中为 'town' 字段)在弹性搜索中找到与一个文档(在本例中为 id 为“4”的文档)相似的文档。
所以我写了这个查询,return没有命中:
GET _search
{
"query": {
"more_like_this" : {
"fields" : ["town"],
"docs" : [
{
"_index" : "app",
"_type" : "house",
"_id" : "4"
}
],
"min_term_freq" : 1,
"max_query_terms" : 12
}
}
}
在我的数据集中,文档 #4 位于一个名为 'Paris' 的城镇。因此,当我 运行 以下查询时,文档 #4 与许多其他结果一起出现在命中结果中:
GET _search
{
"query": {
"match": { "town": "Paris" }
}
}
我不明白为什么 'more_like_this' 查询没有 return 结果,而其他文档的字段具有相同的值。
我准确地说,我使用 '"match_all": {}' 查询检查了 _index、_type 和 _id 参数。
看起来像这个官方弹性搜索资源的第二个例子:http://www.elastic.co/guide/en/elasticsearch/reference/1.5/query-dsl-mlt-query.html
我的 'more_like_this' 查询有什么问题?
我假设您的文档数量较少。
在那种情况下,你能不能把 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
}
}
}
我试图在我的沙箱中基于一个字段(在本例中为 'town' 字段)在弹性搜索中找到与一个文档(在本例中为 id 为“4”的文档)相似的文档。 所以我写了这个查询,return没有命中:
GET _search
{
"query": {
"more_like_this" : {
"fields" : ["town"],
"docs" : [
{
"_index" : "app",
"_type" : "house",
"_id" : "4"
}
],
"min_term_freq" : 1,
"max_query_terms" : 12
}
}
}
在我的数据集中,文档 #4 位于一个名为 'Paris' 的城镇。因此,当我 运行 以下查询时,文档 #4 与许多其他结果一起出现在命中结果中:
GET _search
{
"query": {
"match": { "town": "Paris" }
}
}
我不明白为什么 'more_like_this' 查询没有 return 结果,而其他文档的字段具有相同的值。 我准确地说,我使用 '"match_all": {}' 查询检查了 _index、_type 和 _id 参数。
看起来像这个官方弹性搜索资源的第二个例子:http://www.elastic.co/guide/en/elasticsearch/reference/1.5/query-dsl-mlt-query.html
我的 'more_like_this' 查询有什么问题?
我假设您的文档数量较少。 在那种情况下,你能不能把 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
}
}
}