或使用elasticsearch进行查询

时间:2013-05-13 19:37:18

标签: elasticsearch

我有一个名为"名称"的索引和"描述"提起。我正在对我的索引运行布尔查询。有时,该术语存在于名称和描述字段中,在这种情况下,名称和描述都包含搜索词的文档与具有搜索词的名称或描述的文档相比得分更高。

我想要的是让他们平等。因此,具有该术语的名称或描述的文档与具有名称和描述中的搜索词的文档具有相同的分数。

有可能吗?

以下是示例:

{
    "name":     "xyz",
    "description":  "abc xyz"
},
{
    "name":     "abc",
    "description":  "xyz pqr"
},
{
    "name":     "xyz",
    "description":  "abc pqr"
}

如果用户搜索term" xyz"我希望上面的所有三个文件都有相同的分数。 由于所有文件都包含术语" xyz"在名称或描述中或在两个领域中。

2 个答案:

答案 0 :(得分:1)

您可以使用Filtered Query。过滤器未评分。请参阅下面的查询,以搜索术语"xyz"

POST <index name>/<type>/_search
{
    "filtered": {
        "query": {
            "match_all": {}
        },
        "filter": {
            "bool": {
                "should": [
                    {
                        "term": {
                            "name": "xyz"
                        }
                    },
                    {
                        "term": {
                            "description": "xyz"
                        }
                    }
                ]
            }
        }
    }
}

答案 1 :(得分:0)

我认为你可以: