I have the Elasticsearch query where I am trying to filter results that have a "source" of a specific kind but the query produces the same number of results regardless of the filter value.
{
"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": {
"*": {}
}
}
}
I've tried changing the source type to keyword but that didn't change anything.
The index mappings are below.
{
"mappings": {
"_source": {
"enabled": "true"
},
"properties": {
"body": {
"type": "text"
},
"source": {
"type": "text"
},
"body_vector": {
"dims": 512,
"type": "dense_vector"
},
},
"dynamic": "true"
}
}
Sample docs below.
{"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": "" }
The query should only return the first 2 documents where the source = network.
Any thoughts?
Using your sample mapping and documents and below search query, it returns onlt documents which contain source
as 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": ""
}
}
]