【问题标题】:OR query with elasticsearch或使用 elasticsearch 查询
【发布时间】:2013-05-13 19:37:18
【问题描述】:

我有一个包含“名称”和“描述”的索引。我正在对我的索引运行布尔查询。有时该词同时出现在名称和描述字段中,在这种情况下,名称和描述都包含搜索词的文档的得分高于名称或描述包含搜索词的文档。

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

有可能吗?

示例如下:

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

如果用户搜索术语“xyz”,我希望上述所有三个文档具有相同的分数。 因为所有文档在名称或描述或两个字段中都包含术语“xyz”。

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    您可以为此使用Filtered Query。过滤器不计分。请参阅下面的查询以搜索术语"xyz"

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

    【讨论】:

      【解决方案2】:

      我认为你可以:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-12-26
        • 1970-01-01
        • 1970-01-01
        • 2021-05-06
        • 2016-08-31
        • 2017-10-06
        • 2020-08-05
        • 1970-01-01
        相关资源
        最近更新 更多