标签: term-query

术语与术语查询的评分不同

我通过过滤和使用term查询来应用分数来检索文档。查询应匹配具有指定颜色的所有动物 - 匹配的颜色越多,文档的分数越高。奇怪的是,term查询terms结果却有不同的评分。

{
    "query": {
        "bool": {
            "should": [
                {"terms": {"color": ["brown","darkbrown"] } },
            ]
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

应该和使用一样

{"term": {"color": {"value": "brown"} } },
{"term": {"color": {"value": "darkbrown"} } }
Run Code Online (Sandbox Code Playgroud)

查询编号 无论 1 个或 2 个术语匹配,1 都会为文档提供完全相同的分数。如果匹配更多颜色,后者当然会返回更高的分数。

正如协调因子所述,如果匹配的术语越多,返回的分数应该越高。因此,这两个查询应该产生相同的分数 - 或者是因为term查询不分析搜索词?

我的字段被索引为文本。字符串被索引为字符串的“数组”,例如"brown","darkbrown"

elasticsearch elasticsearch-query term-query

7
推荐指数
1
解决办法
6871
查看次数

如何从多个term查询中匹配一个?

假设我有一种查询语言,可以将“自然”语言查询解析为弹性搜索查询。

假设我们有以下查询:

(type == "my-type" || device_id == "some-device-id") && id == "123456789"
Run Code Online (Sandbox Code Playgroud)

我怎样才能在弹性搜索中实现这一点?

我尝试过:

{
    "bool": {
        "filter": {
            "term": {
                "id": "123456789"
            }
        },
        "should": [
            {
                "term": {
                    "type": "my-type"
                }
            },
            {
                "term": {
                    "device_id": "some-device-id"
                }
            }
        ]
    }
}
Run Code Online (Sandbox Code Playgroud)

但这不是我想要的。

我究竟做错了什么?

映射:

{
    "mappings": {
        "_doc": {
            "properties": {
                "accepted_at":  {
                    "type": "date",
                    "format": "strict_date_optional_time||date_time||epoch_millis"
                },
                "created_at":   {
                    "type": "date",
                    "format": "strict_date_optional_time||date_time||epoch_millis"
                },
                "device_id":    {"type": "keyword"},
                "id":       {"type": "keyword"},
                "location": {"type": "geo_point"},
                "message_id":   {"type": …
Run Code Online (Sandbox Code Playgroud)

elasticsearch elasticsearch-6 term-query

1
推荐指数
1
解决办法
1112
查看次数