elasticsearch - Elasticsearch过滤器未过滤

标签 elasticsearch elasticsearch-dsl

我有Elasticsearch查询,其中我尝试过滤具有特定类型“源”的结果,但是无论过滤器值如何,该查询都会产生相同数量的结果。

{
    "query": {
        "script_score": {
            "query": {
                "bool": {
                    "filter": {
                        "term": {
                            "source": "network"
                        }
                    },
                    "must": {
                        "multi_match": {
                            "query": "",
                            "cutoff_frequency": 0.001,
                            "type": "best_fields",
                            "fields": [
                                "body"
                            ]
                        }
                    }
                }
            },
            "script": {
                "source": "cosineSimilarity(params.query_vector, doc['body_vector'])"
            }
        }
    },
    "highlight": {
        "fields": {
            "*": {}
        }
    }
}

我尝试将源类型更改为关键字,但没有任何改变。

索引映射如下。
{
    "mappings": {
        "_source": {
            "enabled": "true"
        },
        "properties": {
            "body": {
                "type": "text"
            },
            "source": {
                "type": "text"
            },
            "body_vector": {
                "dims": 512,
                "type": "dense_vector"
            },
        },
        "dynamic": "true"
    }
}

下面的样本文档。
{"body": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean malesuada quis neque et volutpat. Integer sodales nec odio a suscipit. Morbi bibendum ut velit sed sagittis. Nulla id nibh porta, finibus tellus sit amet, dignissim eros. Nulla malesuada est mollis odio dignissim, in imperdiet quam ultricies. Proin velit velit, congue ut mollis sit amet, blandit id lorem. Sed interdum viverra augue. Nulla porttitor, elit sit amet euismod ultrices, libero lorem elementum ligula, eu facilisis urna enim sed purus. Proin tempor aliquam turpis. Nulla eget magna lectus. Donec ultricies erat eu tellus hendrerit dignissim.",  "filename": "Filename 1",  "source": "network",  "documenttype": "docx",  "lastmodified": "158262531",  "title": "" }
{"body": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean malesuada quis neque et volutpat. Integer sodales nec odio a suscipit. Morbi bibendum ut velit sed sagittis. Nulla id nibh porta, finibus tellus sit amet, dignissim eros. Nulla malesuada est mollis odio dignissim, in imperdiet quam ultricies. Proin velit velit, congue ut mollis sit amet, blandit id lorem. Sed interdum viverra augue. Nulla porttitor, elit sit amet euismod ultrices, libero lorem elementum ligula, eu facilisis urna enim sed purus. Proin tempor aliquam turpis. Nulla eget magna lectus. Donec ultricies erat eu tellus hendrerit dignissim.",  "filename": "Filename 2",  "source": "network",  "documenttype": "docx",  "lastmodified": "158262531",  "title": "" }
{"body": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean malesuada quis neque et volutpat. Integer sodales nec odio a suscipit. Morbi bibendum ut velit sed sagittis. Nulla id nibh porta, finibus tellus sit amet, dignissim eros. Nulla malesuada est mollis odio dignissim, in imperdiet quam ultricies. Proin velit velit, congue ut mollis sit amet, blandit id lorem. Sed interdum viverra augue. Nulla porttitor, elit sit amet euismod ultrices, libero lorem elementum ligula, eu facilisis urna enim sed purus. Proin tempor aliquam turpis. Nulla eget magna lectus. Donec ultricies erat eu tellus hendrerit dignissim.",  "filename": "Filename 3",  "source": "local",  "documenttype": "docx",  "lastmodified": "158262531",  "title": "" }
{"body": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean malesuada quis neque et volutpat. Integer sodales nec odio a suscipit. Morbi bibendum ut velit sed sagittis. Nulla id nibh porta, finibus tellus sit amet, dignissim eros. Nulla malesuada est mollis odio dignissim, in imperdiet quam ultricies. Proin velit velit, congue ut mollis sit amet, blandit id lorem. Sed interdum viverra augue. Nulla porttitor, elit sit amet euismod ultrices, libero lorem elementum ligula, eu facilisis urna enim sed purus. Proin tempor aliquam turpis. Nulla eget magna lectus. Donec ultricies erat eu tellus hendrerit dignissim.",  "filename": "Filename 4",  "source": "local",  "documenttype": "docx",  "lastmodified": "158262531",  "title": "" }

该查询应仅返回源=网络的前2个文档。

有什么想法吗?

最佳答案

使用示例映射和文档以及下面的搜索查询,它返回包含source作为network的在线文档。

搜索查询

{
  "query": { 
    "bool": { 
      "filter": [ 
        { "term":  { "source": "network" }} -> filter all docs which contains network in source field.
      ]
    }
  }
}

结果
"hits": [
            {
                "_index": "so_60746695_dsl",
                "_type": "_doc",
                "_id": "1",
                "_score": 0.0,
                "_source": {
                    "body": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean malesuada quis neque et volutpat. Integer sodales nec odio a suscipit. Morbi bibendum ut velit sed sagittis. Nulla id nibh porta, finibus tellus sit amet, dignissim eros. Nulla malesuada est mollis odio dignissim, in imperdiet quam ultricies. Proin velit velit, congue ut mollis sit amet, blandit id lorem. Sed interdum viverra augue. Nulla porttitor, elit sit amet euismod ultrices, libero lorem elementum ligula, eu facilisis urna enim sed purus. Proin tempor aliquam turpis. Nulla eget magna lectus. Donec ultricies erat eu tellus hendrerit dignissim.",
                    "filename": "Filename 1",
                    "source": "network",
                    "documenttype": "docx",
                    "lastmodified": "158262531",
                    "title": ""
                }
            },
            {
                "_index": "so_60746695_dsl",
                "_type": "_doc",
                "_id": "2",
                "_score": 0.0,
                "_source": {
                    "body": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean malesuada quis neque et volutpat. Integer sodales nec odio a suscipit. Morbi bibendum ut velit sed sagittis. Nulla id nibh porta, finibus tellus sit amet, dignissim eros. Nulla malesuada est mollis odio dignissim, in imperdiet quam ultricies. Proin velit velit, congue ut mollis sit amet, blandit id lorem. Sed interdum viverra augue. Nulla porttitor, elit sit amet euismod ultrices, libero lorem elementum ligula, eu facilisis urna enim sed purus. Proin tempor aliquam turpis. Nulla eget magna lectus. Donec ultricies erat eu tellus hendrerit dignissim.",
                    "filename": "Filename 2",
                    "source": "network",
                    "documenttype": "docx",
                    "lastmodified": "158262531",
                    "title": ""
                }
            }
        ]

关于elasticsearch - Elasticsearch过滤器未过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60766654/

相关文章:

python - 使用elasticsearch遍历查询的所有结果

performance - 用于Elasticsearch的模拟EXPLAIN MySql

elasticsearch - 如何在ElasticSearch索引中的每个文档中添加路径字段?

elasticsearch - 没有指定字段的简单查询在整个 ElasticSearch 索引中搜索

elasticsearch - Elasticsearch 分数计算

elasticsearch - elasticsearch如何识别哪些字段具有共同的聚合值

ruby - 初始ElasticSearch批量索引/插入/上传确实很慢,如何提高速度?

elasticsearch - 为Elasticsearch设置系统变量ES_PATH_CONF时出现问题

elasticsearch - Elasticsearch 5.5高亮字段不起作用

python - 在 python 中将 Elasticsearch 查询转换为 Elasticsearch-dsl