Change notes ES searches to use new denormalized fields
What does this MR do?
Related to #300843 (closed) and #300844 (closed)
-
Removes project joins from the Elasticsearch query used for notes (comments) scoped searches. It was not possible to separate group/project from global searches so this MR encompasses all of them.
-
Organizes the global/group/project service visibility specs so that notes have their own section and all 4 types of searchable notes are tested there.
-
Add shared specs for testing that the joins have been removed from the query if the
add_permissions_data_to_notes_documents
migration has completed
How to test
Setup for testing:
- Enable Elasticsearch in GDK
- Enable Advanced Search in Admin Settings
Perform a global, group, and project notes (comments) scoped search and verify using the Performance Bar that the Elasticsearch queries do not contain the has_parent
joins
Screenshots (strongly suggested)
Elasticsearch queries before/after. All queries done with admin user and performance bar. Removing the joins for to the project documents means
- replacing
"has_parent"
sections of the query with queries forvisibility_level
and appropriate project featurelevel
which are now top level fields in the document - replacing all references to
id
when looking at project id withproject_id
which is a top level field in the document
Global
Before
{
"query": {
"bool": {
"must": [
{
"simple_query_string": {
"_name": "note:match:search_terms",
"fields": [
"note"
],
"query": "*",
"lenient": true,
"default_operator": "and"
}
}
],
"filter": [
{
"term": {
"type": {
"_name": "doc:is_a:note",
"value": "note"
}
}
},
{
"bool": {
"_name": "note:authorized",
"should": [
{
"bool": {
"must": [
{
"has_parent": {
"parent_type": "project",
"query": {
"bool": {
"should": {
"bool": {
"_name": "note:authorized:project:issues",
"filter": [
{
"term": {
"visibility_level": {
"_name": "note:authorized:project:issues:any",
"value": 0
}
}
},
{
"terms": {
"_name": "note:authorized:project:issues:enabled_or_private",
"issues_access_level": [
20,
10
]
}
}
]
}
}
}
}
}
},
{
"term": {
"noteable_type": {
"_name": "note:authorized:noteable:is_a:Issue",
"value": "Issue"
}
}
}
]
}
},
{
"bool": {
"must": [
{
"has_parent": {
"parent_type": "project",
"query": {
"bool": {
"should": {
"bool": {
"_name": "note:authorized:project:merge_requests",
"filter": [
{
"term": {
"visibility_level": {
"_name": "note:authorized:project:merge_requests:any",
"value": 0
}
}
},
{
"terms": {
"_name": "note:authorized:project:merge_requests:enabled_or_private",
"merge_requests_access_level": [
20,
10
]
}
}
]
}
}
}
}
}
},
{
"term": {
"noteable_type": {
"_name": "note:authorized:noteable:is_a:MergeRequest",
"value": "MergeRequest"
}
}
}
]
}
},
{
"bool": {
"must": [
{
"has_parent": {
"parent_type": "project",
"query": {
"bool": {
"should": {
"bool": {
"_name": "note:authorized:project:snippets",
"filter": [
{
"term": {
"visibility_level": {
"_name": "note:authorized:project:snippets:any",
"value": 0
}
}
},
{
"terms": {
"_name": "note:authorized:project:snippets:enabled_or_private",
"snippets_access_level": [
20,
10
]
}
}
]
}
}
}
}
}
},
{
"term": {
"noteable_type": {
"_name": "note:authorized:noteable:is_a:Snippet",
"value": "Snippet"
}
}
}
]
}
},
{
"bool": {
"must": [
{
"has_parent": {
"parent_type": "project",
"query": {
"bool": {
"should": {
"bool": {
"_name": "note:authorized:project:repository",
"filter": [
{
"term": {
"visibility_level": {
"_name": "note:authorized:project:repository:any",
"value": 0
}
}
},
{
"terms": {
"_name": "note:authorized:project:repository:enabled_or_private",
"repository_access_level": [
20,
10
]
}
}
]
}
}
}
}
}
},
{
"term": {
"noteable_type": {
"_name": "note:authorized:noteable:is_a:Commit",
"value": "Commit"
}
}
}
]
}
},
{
"bool": {
"must": [
{
"has_parent": {
"parent_type": "project",
"query": {
"bool": {
"should": {
"bool": {
"_name": "note:authorized:project:visibility:10:issues",
"filter": [
{
"term": {
"visibility_level": {
"_name": "note:authorized:project:visibility:10",
"value": 10
}
}
},
{
"terms": {
"_name": "note:authorized:project:visibility:10:issues:enabled_or_private",
"issues_access_level": [
20,
10
]
}
}
]
}
}
}
}
}
},
{
"term": {
"noteable_type": {
"_name": "note:authorized:noteable:is_a:Issue",
"value": "Issue"
}
}
}
]
}
},
{
"bool": {
"must": [
{
"has_parent": {
"parent_type": "project",
"query": {
"bool": {
"should": {
"bool": {
"_name": "note:authorized:project:visibility:10:merge_requests",
"filter": [
{
"term": {
"visibility_level": {
"_name": "note:authorized:project:visibility:10",
"value": 10
}
}
},
{
"terms": {
"_name": "note:authorized:project:visibility:10:merge_requests:enabled_or_private",
"merge_requests_access_level": [
20,
10
]
}
}
]
}
}
}
}
}
},
{
"term": {
"noteable_type": {
"_name": "note:authorized:noteable:is_a:MergeRequest",
"value": "MergeRequest"
}
}
}
]
}
},
{
"bool": {
"must": [
{
"has_parent": {
"parent_type": "project",
"query": {
"bool": {
"should": {
"bool": {
"_name": "note:authorized:project:visibility:10:snippets",
"filter": [
{
"term": {
"visibility_level": {
"_name": "note:authorized:project:visibility:10",
"value": 10
}
}
},
{
"terms": {
"_name": "note:authorized:project:visibility:10:snippets:enabled_or_private",
"snippets_access_level": [
20,
10
]
}
}
]
}
}
}
}
}
},
{
"term": {
"noteable_type": {
"_name": "note:authorized:noteable:is_a:Snippet",
"value": "Snippet"
}
}
}
]
}
},
{
"bool": {
"must": [
{
"has_parent": {
"parent_type": "project",
"query": {
"bool": {
"should": {
"bool": {
"_name": "note:authorized:project:visibility:10:repository",
"filter": [
{
"term": {
"visibility_level": {
"_name": "note:authorized:project:visibility:10",
"value": 10
}
}
},
{
"terms": {
"_name": "note:authorized:project:visibility:10:repository:enabled_or_private",
"repository_access_level": [
20,
10
]
}
}
]
}
}
}
}
}
},
{
"term": {
"noteable_type": {
"_name": "note:authorized:noteable:is_a:Commit",
"value": "Commit"
}
}
}
]
}
},
{
"bool": {
"must": [
{
"has_parent": {
"parent_type": "project",
"query": {
"bool": {
"should": {
"bool": {
"_name": "note:authorized:project:visibility:20:issues",
"filter": [
{
"term": {
"visibility_level": {
"_name": "note:authorized:project:visibility:20",
"value": 20
}
}
},
{
"terms": {
"_name": "note:authorized:project:visibility:20:issues:enabled_or_private",
"issues_access_level": [
20,
10
]
}
}
]
}
}
}
}
}
},
{
"term": {
"noteable_type": {
"_name": "note:authorized:noteable:is_a:Issue",
"value": "Issue"
}
}
}
]
}
},
{
"bool": {
"must": [
{
"has_parent": {
"parent_type": "project",
"query": {
"bool": {
"should": {
"bool": {
"_name": "note:authorized:project:visibility:20:merge_requests",
"filter": [
{
"term": {
"visibility_level": {
"_name": "note:authorized:project:visibility:20",
"value": 20
}
}
},
{
"terms": {
"_name": "note:authorized:project:visibility:20:merge_requests:enabled_or_private",
"merge_requests_access_level": [
20,
10
]
}
}
]
}
}
}
}
}
},
{
"term": {
"noteable_type": {
"_name": "note:authorized:noteable:is_a:MergeRequest",
"value": "MergeRequest"
}
}
}
]
}
},
{
"bool": {
"must": [
{
"has_parent": {
"parent_type": "project",
"query": {
"bool": {
"should": {
"bool": {
"_name": "note:authorized:project:visibility:20:snippets",
"filter": [
{
"term": {
"visibility_level": {
"_name": "note:authorized:project:visibility:20",
"value": 20
}
}
},
{
"terms": {
"_name": "note:authorized:project:visibility:20:snippets:enabled_or_private",
"snippets_access_level": [
20,
10
]
}
}
]
}
}
}
}
}
},
{
"term": {
"noteable_type": {
"_name": "note:authorized:noteable:is_a:Snippet",
"value": "Snippet"
}
}
}
]
}
},
{
"bool": {
"must": [
{
"has_parent": {
"parent_type": "project",
"query": {
"bool": {
"should": {
"bool": {
"_name": "note:authorized:project:visibility:20:repository",
"filter": [
{
"term": {
"visibility_level": {
"_name": "note:authorized:project:visibility:20",
"value": 20
}
}
},
{
"terms": {
"_name": "note:authorized:project:visibility:20:repository:enabled_or_private",
"repository_access_level": [
20,
10
]
}
}
]
}
}
}
}
}
},
{
"term": {
"noteable_type": {
"_name": "note:authorized:noteable:is_a:Commit",
"value": "Commit"
}
}
}
]
}
}
]
}
}
]
}
},
"highlight": {
"fields": {
"note": {}
},
"number_of_fragments": 0,
"pre_tags": [
"gitlabelasticsearch→"
],
"post_tags": [
"←gitlabelasticsearch"
]
}
}
After
{
"query": {
"bool": {
"must": [
{
"simple_query_string": {
"_name": "note:match:search_terms",
"fields": [
"note"
],
"query": "findable text",
"lenient": true,
"default_operator": "and"
}
}
],
"filter": [
{
"term": {
"type": {
"_name": "doc:is_a:note",
"value": "note"
}
}
},
{
"bool": {
"_name": "note:authorized",
"should": [
{
"bool": {
"must": [
{
"term": {
"noteable_type": {
"_name": "note:authorized:noteable:is_a:Issue",
"value": "Issue"
}
}
},
{
"bool": {
"_name": "note:authorized:project:issues",
"filter": [
{
"term": {
"visibility_level": {
"_name": "note:authorized:project:issues:any",
"value": 0
}
}
},
{
"terms": {
"_name": "note:authorized:project:issues:enabled_or_private",
"issues_access_level": [
20,
10
]
}
}
]
}
}
]
}
},
{
"bool": {
"must": [
{
"term": {
"noteable_type": {
"_name": "note:authorized:noteable:is_a:MergeRequest",
"value": "MergeRequest"
}
}
},
{
"bool": {
"_name": "note:authorized:project:merge_requests",
"filter": [
{
"term": {
"visibility_level": {
"_name": "note:authorized:project:merge_requests:any",
"value": 0
}
}
},
{
"terms": {
"_name": "note:authorized:project:merge_requests:enabled_or_private",
"merge_requests_access_level": [
20,
10
]
}
}
]
}
}
]
}
},
{
"bool": {
"must": [
{
"term": {
"noteable_type": {
"_name": "note:authorized:noteable:is_a:Snippet",
"value": "Snippet"
}
}
},
{
"bool": {
"_name": "note:authorized:project:snippets",
"filter": [
{
"term": {
"visibility_level": {
"_name": "note:authorized:project:snippets:any",
"value": 0
}
}
},
{
"terms": {
"_name": "note:authorized:project:snippets:enabled_or_private",
"snippets_access_level": [
20,
10
]
}
}
]
}
}
]
}
},
{
"bool": {
"must": [
{
"term": {
"noteable_type": {
"_name": "note:authorized:noteable:is_a:Commit",
"value": "Commit"
}
}
},
{
"bool": {
"_name": "note:authorized:project:repository",
"filter": [
{
"term": {
"visibility_level": {
"_name": "note:authorized:project:repository:any",
"value": 0
}
}
},
{
"terms": {
"_name": "note:authorized:project:repository:enabled_or_private",
"repository_access_level": [
20,
10
]
}
}
]
}
}
]
}
},
{
"bool": {
"must": [
{
"term": {
"noteable_type": {
"_name": "note:authorized:noteable:is_a:Issue",
"value": "Issue"
}
}
},
{
"bool": {
"_name": "note:authorized:project:visibility:10:issues",
"filter": [
{
"term": {
"visibility_level": {
"_name": "note:authorized:project:visibility:10",
"value": 10
}
}
},
{
"terms": {
"_name": "note:authorized:project:visibility:10:issues:enabled_or_private",
"issues_access_level": [
20,
10
]
}
}
]
}
}
]
}
},
{
"bool": {
"must": [
{
"term": {
"noteable_type": {
"_name": "note:authorized:noteable:is_a:MergeRequest",
"value": "MergeRequest"
}
}
},
{
"bool": {
"_name": "note:authorized:project:visibility:10:merge_requests",
"filter": [
{
"term": {
"visibility_level": {
"_name": "note:authorized:project:visibility:10",
"value": 10
}
}
},
{
"terms": {
"_name": "note:authorized:project:visibility:10:merge_requests:enabled_or_private",
"merge_requests_access_level": [
20,
10
]
}
}
]
}
}
]
}
},
{
"bool": {
"must": [
{
"term": {
"noteable_type": {
"_name": "note:authorized:noteable:is_a:Snippet",
"value": "Snippet"
}
}
},
{
"bool": {
"_name": "note:authorized:project:visibility:10:snippets",
"filter": [
{
"term": {
"visibility_level": {
"_name": "note:authorized:project:visibility:10",
"value": 10
}
}
},
{
"terms": {
"_name": "note:authorized:project:visibility:10:snippets:enabled_or_private",
"snippets_access_level": [
20,
10
]
}
}
]
}
}
]
}
},
{
"bool": {
"must": [
{
"term": {
"noteable_type": {
"_name": "note:authorized:noteable:is_a:Commit",
"value": "Commit"
}
}
},
{
"bool": {
"_name": "note:authorized:project:visibility:10:repository",
"filter": [
{
"term": {
"visibility_level": {
"_name": "note:authorized:project:visibility:10",
"value": 10
}
}
},
{
"terms": {
"_name": "note:authorized:project:visibility:10:repository:enabled_or_private",
"repository_access_level": [
20,
10
]
}
}
]
}
}
]
}
},
{
"bool": {
"must": [
{
"term": {
"noteable_type": {
"_name": "note:authorized:noteable:is_a:Issue",
"value": "Issue"
}
}
},
{
"bool": {
"_name": "note:authorized:project:visibility:20:issues",
"filter": [
{
"term": {
"visibility_level": {
"_name": "note:authorized:project:visibility:20",
"value": 20
}
}
},
{
"terms": {
"_name": "note:authorized:project:visibility:20:issues:enabled_or_private",
"issues_access_level": [
20,
10
]
}
}
]
}
}
]
}
},
{
"bool": {
"must": [
{
"term": {
"noteable_type": {
"_name": "note:authorized:noteable:is_a:MergeRequest",
"value": "MergeRequest"
}
}
},
{
"bool": {
"_name": "note:authorized:project:visibility:20:merge_requests",
"filter": [
{
"term": {
"visibility_level": {
"_name": "note:authorized:project:visibility:20",
"value": 20
}
}
},
{
"terms": {
"_name": "note:authorized:project:visibility:20:merge_requests:enabled_or_private",
"merge_requests_access_level": [
20,
10
]
}
}
]
}
}
]
}
},
{
"bool": {
"must": [
{
"term": {
"noteable_type": {
"_name": "note:authorized:noteable:is_a:Snippet",
"value": "Snippet"
}
}
},
{
"bool": {
"_name": "note:authorized:project:visibility:20:snippets",
"filter": [
{
"term": {
"visibility_level": {
"_name": "note:authorized:project:visibility:20",
"value": 20
}
}
},
{
"terms": {
"_name": "note:authorized:project:visibility:20:snippets:enabled_or_private",
"snippets_access_level": [
20,
10
]
}
}
]
}
}
]
}
},
{
"bool": {
"must": [
{
"term": {
"noteable_type": {
"_name": "note:authorized:noteable:is_a:Commit",
"value": "Commit"
}
}
},
{
"bool": {
"_name": "note:authorized:project:visibility:20:repository",
"filter": [
{
"term": {
"visibility_level": {
"_name": "note:authorized:project:visibility:20",
"value": 20
}
}
},
{
"terms": {
"_name": "note:authorized:project:visibility:20:repository:enabled_or_private",
"repository_access_level": [
20,
10
]
}
}
]
}
}
]
}
}
]
}
}
]
}
},
"highlight": {
"fields": {
"note": {}
},
"number_of_fragments": 0,
"pre_tags": [
"gitlabelasticsearch→"
],
"post_tags": [
"←gitlabelasticsearch"
]
}
}
Group
Before
{
"query": {
"bool": {
"must": [
{
"simple_query_string": {
"_name": "note:match:search_terms",
"fields": [
"note"
],
"query": "*",
"lenient": true,
"default_operator": "and"
}
}
],
"filter": [
{
"term": {
"type": {
"_name": "doc:is_a:note",
"value": "note"
}
}
},
{
"bool": {
"_name": "note:authorized",
"should": [
{
"bool": {
"must": [
{
"has_parent": {
"parent_type": "project",
"query": {
"bool": {
"should": {
"bool": {
"_name": "note:authorized:project:issues",
"filter": [
{
"terms": {
"_name": "note:authorized:project:issues:membership:id",
"id": [
4
]
}
},
{
"terms": {
"_name": "note:authorized:project:issues:enabled_or_private",
"issues_access_level": [
20,
10
]
}
}
]
}
}
}
}
}
},
{
"term": {
"noteable_type": {
"_name": "note:authorized:noteable:is_a:Issue",
"value": "Issue"
}
}
}
]
}
},
{
"bool": {
"must": [
{
"has_parent": {
"parent_type": "project",
"query": {
"bool": {
"should": {
"bool": {
"_name": "note:authorized:project:merge_requests",
"filter": [
{
"terms": {
"_name": "note:authorized:project:merge_requests:membership:id",
"id": [
4
]
}
},
{
"terms": {
"_name": "note:authorized:project:merge_requests:enabled_or_private",
"merge_requests_access_level": [
20,
10
]
}
}
]
}
}
}
}
}
},
{
"term": {
"noteable_type": {
"_name": "note:authorized:noteable:is_a:MergeRequest",
"value": "MergeRequest"
}
}
}
]
}
},
{
"bool": {
"must": [
{
"has_parent": {
"parent_type": "project",
"query": {
"bool": {
"should": {
"bool": {
"_name": "note:authorized:project:snippets",
"filter": [
{
"terms": {
"_name": "note:authorized:project:snippets:membership:id",
"id": [
4
]
}
},
{
"terms": {
"_name": "note:authorized:project:snippets:enabled_or_private",
"snippets_access_level": [
20,
10
]
}
}
]
}
}
}
}
}
},
{
"term": {
"noteable_type": {
"_name": "note:authorized:noteable:is_a:Snippet",
"value": "Snippet"
}
}
}
]
}
},
{
"bool": {
"must": [
{
"has_parent": {
"parent_type": "project",
"query": {
"bool": {
"should": {
"bool": {
"_name": "note:authorized:project:repository",
"filter": [
{
"terms": {
"_name": "note:authorized:project:repository:membership:id",
"id": [
4
]
}
},
{
"terms": {
"_name": "note:authorized:project:repository:enabled_or_private",
"repository_access_level": [
20,
10
]
}
}
]
}
}
}
}
}
},
{
"term": {
"noteable_type": {
"_name": "note:authorized:noteable:is_a:Commit",
"value": "Commit"
}
}
}
]
}
}
]
}
}
]
}
},
"highlight": {
"fields": {
"note": {}
},
"number_of_fragments": 0,
"pre_tags": [
"gitlabelasticsearch→"
],
"post_tags": [
"←gitlabelasticsearch"
]
}
}
After
{
"query": {
"bool": {
"must": [
{
"simple_query_string": {
"_name": "note:match:search_terms",
"fields": [
"note"
],
"query": "findable text",
"lenient": true,
"default_operator": "and"
}
}
],
"filter": [
{
"term": {
"type": {
"_name": "doc:is_a:note",
"value": "note"
}
}
},
{
"bool": {
"_name": "note:authorized",
"should": [
{
"bool": {
"must": [
{
"term": {
"noteable_type": {
"_name": "note:authorized:noteable:is_a:Issue",
"value": "Issue"
}
}
},
{
"bool": {
"_name": "note:authorized:project:issues",
"filter": [
{
"terms": {
"_name": "note:authorized:project:issues:membership:id",
"project_id": [
27,
28,
30,
32,
33,
34
]
}
},
{
"terms": {
"_name": "note:authorized:project:issues:enabled_or_private",
"issues_access_level": [
20,
10
]
}
}
]
}
}
]
}
},
{
"bool": {
"must": [
{
"term": {
"noteable_type": {
"_name": "note:authorized:noteable:is_a:MergeRequest",
"value": "MergeRequest"
}
}
},
{
"bool": {
"_name": "note:authorized:project:merge_requests",
"filter": [
{
"terms": {
"_name": "note:authorized:project:merge_requests:membership:id",
"project_id": [
27,
28,
30,
32,
33,
34
]
}
},
{
"terms": {
"_name": "note:authorized:project:merge_requests:enabled_or_private",
"merge_requests_access_level": [
20,
10
]
}
}
]
}
}
]
}
},
{
"bool": {
"must": [
{
"term": {
"noteable_type": {
"_name": "note:authorized:noteable:is_a:Snippet",
"value": "Snippet"
}
}
},
{
"bool": {
"_name": "note:authorized:project:snippets",
"filter": [
{
"terms": {
"_name": "note:authorized:project:snippets:membership:id",
"project_id": [
27,
28,
30,
32,
33,
34
]
}
},
{
"terms": {
"_name": "note:authorized:project:snippets:enabled_or_private",
"snippets_access_level": [
20,
10
]
}
}
]
}
}
]
}
},
{
"bool": {
"must": [
{
"term": {
"noteable_type": {
"_name": "note:authorized:noteable:is_a:Commit",
"value": "Commit"
}
}
},
{
"bool": {
"_name": "note:authorized:project:repository",
"filter": [
{
"terms": {
"_name": "note:authorized:project:repository:membership:id",
"project_id": [
27,
28,
30,
32,
33,
34
]
}
},
{
"terms": {
"_name": "note:authorized:project:repository:enabled_or_private",
"repository_access_level": [
20,
10
]
}
}
]
}
}
]
}
}
]
}
}
]
}
},
"highlight": {
"fields": {
"note": {}
},
"number_of_fragments": 0,
"pre_tags": [
"gitlabelasticsearch→"
],
"post_tags": [
"←gitlabelasticsearch"
]
}
}
Project
Before
{
"query": {
"bool": {
"must": [
{
"simple_query_string": {
"_name": "note:match:search_terms",
"fields": [
"note"
],
"query": "*",
"lenient": true,
"default_operator": "and"
}
}
],
"filter": [
{
"term": {
"type": {
"_name": "doc:is_a:note",
"value": "note"
}
}
},
{
"bool": {
"_name": "note:authorized",
"should": [
{
"bool": {
"must": [
{
"has_parent": {
"parent_type": "project",
"query": {
"bool": {
"should": {
"bool": {
"_name": "note:authorized:project:issues",
"filter": [
{
"terms": {
"_name": "note:authorized:project:issues:membership:id",
"id": [
4
]
}
},
{
"terms": {
"_name": "note:authorized:project:issues:enabled_or_private",
"issues_access_level": [
20,
10
]
}
}
]
}
}
}
}
}
},
{
"term": {
"noteable_type": {
"_name": "note:authorized:noteable:is_a:Issue",
"value": "Issue"
}
}
}
]
}
},
{
"bool": {
"must": [
{
"has_parent": {
"parent_type": "project",
"query": {
"bool": {
"should": {
"bool": {
"_name": "note:authorized:project:merge_requests",
"filter": [
{
"terms": {
"_name": "note:authorized:project:merge_requests:membership:id",
"id": [
4
]
}
},
{
"terms": {
"_name": "note:authorized:project:merge_requests:enabled_or_private",
"merge_requests_access_level": [
20,
10
]
}
}
]
}
}
}
}
}
},
{
"term": {
"noteable_type": {
"_name": "note:authorized:noteable:is_a:MergeRequest",
"value": "MergeRequest"
}
}
}
]
}
},
{
"bool": {
"must": [
{
"has_parent": {
"parent_type": "project",
"query": {
"bool": {
"should": {
"bool": {
"_name": "note:authorized:project:snippets",
"filter": [
{
"terms": {
"_name": "note:authorized:project:snippets:membership:id",
"id": [
4
]
}
},
{
"terms": {
"_name": "note:authorized:project:snippets:enabled_or_private",
"snippets_access_level": [
20,
10
]
}
}
]
}
}
}
}
}
},
{
"term": {
"noteable_type": {
"_name": "note:authorized:noteable:is_a:Snippet",
"value": "Snippet"
}
}
}
]
}
},
{
"bool": {
"must": [
{
"has_parent": {
"parent_type": "project",
"query": {
"bool": {
"should": {
"bool": {
"_name": "note:authorized:project:repository",
"filter": [
{
"terms": {
"_name": "note:authorized:project:repository:membership:id",
"id": [
4
]
}
},
{
"terms": {
"_name": "note:authorized:project:repository:enabled_or_private",
"repository_access_level": [
20,
10
]
}
}
]
}
}
}
}
}
},
{
"term": {
"noteable_type": {
"_name": "note:authorized:noteable:is_a:Commit",
"value": "Commit"
}
}
}
]
}
}
]
}
}
]
}
},
"highlight": {
"fields": {
"note": {}
},
"number_of_fragments": 0,
"pre_tags": [
"gitlabelasticsearch→"
],
"post_tags": [
"←gitlabelasticsearch"
]
}
}
After
{
"query": {
"bool": {
"must": [
{
"simple_query_string": {
"_name": "note:match:search_terms",
"fields": [
"note"
],
"query": "findable text",
"lenient": true,
"default_operator": "and"
}
}
],
"filter": [
{
"term": {
"type": {
"_name": "doc:is_a:note",
"value": "note"
}
}
},
{
"bool": {
"_name": "note:authorized",
"should": [
{
"bool": {
"must": [
{
"term": {
"noteable_type": {
"_name": "note:authorized:noteable:is_a:Issue",
"value": "Issue"
}
}
},
{
"bool": {
"_name": "note:authorized:project:issues",
"filter": [
{
"terms": {
"_name": "note:authorized:project:issues:membership:id",
"project_id": [
33
]
}
},
{
"terms": {
"_name": "note:authorized:project:issues:enabled_or_private",
"issues_access_level": [
20,
10
]
}
}
]
}
}
]
}
},
{
"bool": {
"must": [
{
"term": {
"noteable_type": {
"_name": "note:authorized:noteable:is_a:MergeRequest",
"value": "MergeRequest"
}
}
},
{
"bool": {
"_name": "note:authorized:project:merge_requests",
"filter": [
{
"terms": {
"_name": "note:authorized:project:merge_requests:membership:id",
"project_id": [
33
]
}
},
{
"terms": {
"_name": "note:authorized:project:merge_requests:enabled_or_private",
"merge_requests_access_level": [
20,
10
]
}
}
]
}
}
]
}
},
{
"bool": {
"must": [
{
"term": {
"noteable_type": {
"_name": "note:authorized:noteable:is_a:Snippet",
"value": "Snippet"
}
}
},
{
"bool": {
"_name": "note:authorized:project:snippets",
"filter": [
{
"terms": {
"_name": "note:authorized:project:snippets:membership:id",
"project_id": [
33
]
}
},
{
"terms": {
"_name": "note:authorized:project:snippets:enabled_or_private",
"snippets_access_level": [
20,
10
]
}
}
]
}
}
]
}
},
{
"bool": {
"must": [
{
"term": {
"noteable_type": {
"_name": "note:authorized:noteable:is_a:Commit",
"value": "Commit"
}
}
},
{
"bool": {
"_name": "note:authorized:project:repository",
"filter": [
{
"terms": {
"_name": "note:authorized:project:repository:membership:id",
"project_id": [
33
]
}
},
{
"terms": {
"_name": "note:authorized:project:repository:enabled_or_private",
"repository_access_level": [
20,
10
]
}
}
]
}
}
]
}
}
]
}
}
]
}
},
"highlight": {
"fields": {
"note": {}
},
"number_of_fragments": 0,
"pre_tags": [
"gitlabelasticsearch→"
],
"post_tags": [
"←gitlabelasticsearch"
]
}
}
Does this MR meet the acceptance criteria?
Conformity
- [-] Changelog entry
- [-] Documentation (if required)
-
Code review guidelines -
Merge request performance guidelines -
Style guides - [-] Database guides
-
Separation of EE specific content
Availability and Testing
-
Review and add/update tests for this feature/bug. Consider all test levels. See the Test Planning Process. - [-] Tested in all supported browsers
- [-] Informed Infrastructure department of a default or new setting change, if applicable per definition of done
Security
If this MR contains changes to processing or storing of credentials or tokens, authorization and authentication methods and other items described in the security review guidelines:
- [-] Label as security and @ mention
@gitlab-com/gl-security/appsec
- [-] The MR includes necessary changes to maintain consistency between UI, API, email, or other methods
- [-] Security reports checked/validated by a reviewer from the AppSec team