Elasticsearch фильтр не фильтрует - PullRequest
0 голосов
/ 20 марта 2020

У меня есть запрос Elasticsearch, в котором я пытаюсь отфильтровать результаты, имеющие «источник» определенного типа c, но запрос выдает одинаковое количество результатов независимо от значения фильтра.

{
    "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 документа, где источник = сеть.

Есть мысли?

1 Ответ

0 голосов
/ 20 марта 2020

Используя ваш образец сопоставления и документы и под поисковым запросом, он возвращает только документы, которые содержат 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": ""
                }
            }
        ]
...