Browse Source

User Profile - rename search to suggest profile (#85196)

This PR renames "search profile" to "suggest profile" in all relevant
places:
* Class names
* Variable names
* Docs
* URL and REST specs
Yang Wang 3 years ago
parent
commit
dea288efdc
20 changed files with 120 additions and 111 deletions
  1. 9 4
      docs/reference/redirects.asciidoc
  2. 5 5
      rest-api-spec/src/main/resources/rest-api-spec/api/security.suggest_user_profiles.json
  3. 2 2
      x-pack/docs/en/rest-api/security.asciidoc
  4. 1 1
      x-pack/docs/en/rest-api/security/disable-user-profile.asciidoc
  5. 1 1
      x-pack/docs/en/rest-api/security/enable-user-profile.asciidoc
  6. 14 14
      x-pack/docs/en/rest-api/security/suggest-user-profile.asciidoc
  7. 5 5
      x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/security/action/profile/SuggestProfilesAction.java
  8. 3 3
      x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/security/action/profile/SuggestProfilesRequest.java
  9. 3 3
      x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/security/action/profile/SuggestProfilesResponse.java
  10. 2 2
      x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/security/authz/privilege/WriteProfileDataPrivilegesTests.java
  11. 3 3
      x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/security/authz/store/ReservedRolesStoreTests.java
  12. 1 1
      x-pack/plugin/security/qa/operator-privileges-tests/src/javaRestTest/java/org/elasticsearch/xpack/security/operator/Constants.java
  13. 1 1
      x-pack/plugin/security/qa/profile/src/javaRestTest/java/org/elasticsearch/xpack/security/profile/ProfileIT.java
  14. 22 22
      x-pack/plugin/security/src/internalClusterTest/java/org/elasticsearch/xpack/security/profile/ProfileIntegTests.java
  15. 5 5
      x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/Security.java
  16. 8 8
      x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/action/profile/TransportSuggestProfilesAction.java
  17. 13 9
      x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/profile/ProfileService.java
  18. 9 9
      x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/rest/action/profile/RestSuggestProfilesAction.java
  19. 11 11
      x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/rest/action/profile/RestSuggestProfilesActionTests.java
  20. 2 2
      x-pack/plugin/src/yamlRestTest/resources/rest-api-spec/test/user_profile/10_basic.yml

+ 9 - 4
docs/reference/redirects.asciidoc

@@ -309,6 +309,11 @@ See <<configuring-stack-security,Configuring security for the Elastic Stack>>.
 === Encrypting communications
 
 See <<configuring-stack-security,Configuring security for the Elastic Stack>>.
+
+[role="exclude",id="security-api-search-user-profile"]
+=== Search user profile API
+
+See <<security-api-suggest-user-profile,Suggest user profile API>>.
 // [END] Security redirects
 
 [roles="exclude",id="modules-scripting-stored-scripts"]
@@ -360,7 +365,7 @@ See <<xpack-ccr,Cross-cluster replication>>.
 === Upgrade API
 
 The `_upgrade` API is no longer useful and will be removed.
-For information about upgrading, see 
+For information about upgrading, see
 {stack-ref}/upgrading-elasticsearch.html[Upgrading {es}].
 
 [role="exclude",id="mapping-parent-field"]
@@ -1813,7 +1818,7 @@ See the <<sql-search-api-request-body,request body parameters>> for the
 
 When upgrading to {es} 8.0 and later, you must first upgrade to {prev-major-last}
 even if you opt to perform a full-cluster restart instead of a rolling upgrade.
-For more information about upgrading, refer to 
+For more information about upgrading, refer to
 {stack-ref}/upgrading-elastic-stack.html[Upgrading to Elastic {version}].
 
 [role="exclude",id="rolling-upgrades"]
@@ -1821,7 +1826,7 @@ For more information about upgrading, refer to
 
 When upgrading to {es} 8.0 and later, you must first upgrade to {prev-major-last}
 whether you opt to perform a rolling upgrade (upgrade one node at a time) or a full-cluster restart upgrade.
-For more information about upgrading, refer to 
+For more information about upgrading, refer to
 {stack-ref}/upgrading-elastic-stack.html[Upgrading to Elastic {version}].
 
 [role="exclude",id="reindex-upgrade"]
@@ -1832,7 +1837,7 @@ Before upgrading to {es} 8.0 and later, you must reindex any indices created in
 a 6.x version. We recommend using the **Upgrade Assistant** to guide you
 through this process.
 
-For more information about upgrading, refer to 
+For more information about upgrading, refer to
 {stack-ref}/upgrading-elastic-stack.html[Upgrading to Elastic {version}].
 //end::upgrade-reindex[]
 

+ 5 - 5
rest-api-spec/src/main/resources/rest-api-spec/api/security.search_user_profiles.json → rest-api-spec/src/main/resources/rest-api-spec/api/security.suggest_user_profiles.json

@@ -1,8 +1,8 @@
 {
-  "security.search_user_profiles":{
+  "security.suggest_user_profiles":{
     "documentation":{
-      "url":"https://www.elastic.co/guide/en/elasticsearch/reference/master/security-api-search-user-profile.html",
-      "description":"Searches for user profiles that match specified criteria."
+      "url":"https://www.elastic.co/guide/en/elasticsearch/reference/master/security-api-suggest-user-profile.html",
+      "description":"Get suggestions for user profiles that match specified search criteria."
     },
     "stability":"experimental",
     "visibility":"feature_flag",
@@ -14,7 +14,7 @@
     "url":{
       "paths":[
         {
-          "path":"/_security/profile/_search",
+          "path":"/_security/profile/_suggest",
           "methods":[
             "GET",
             "POST"
@@ -29,7 +29,7 @@
       }
     },
     "body":{
-      "description":"The search definition for user profiles",
+      "description":"The suggestion definition for user profiles",
       "required":false
     }
   }

+ 2 - 2
x-pack/docs/en/rest-api/security.asciidoc

@@ -143,7 +143,7 @@ Use the following APIs to retrieve and manage user profiles.
 * <<security-api-update-user-profile-data, Update user profile data>>
 * <<security-api-enable-user-profile, Enable user profile>>
 * <<security-api-disable-user-profile, Disable user profile>>
-* <<security-api-search-user-profile, Search user profile>>
+* <<security-api-suggest-user-profile, Suggest user profile>>
 
 
 include::security/activate-user-profile.asciidoc[]
@@ -198,5 +198,5 @@ include::security/saml-invalidate-api.asciidoc[]
 include::security/saml-complete-logout-api.asciidoc[]
 include::security/saml-sp-metadata.asciidoc[]
 include::security/ssl.asciidoc[]
-include::security/search-user-profile.asciidoc[]
+include::security/suggest-user-profile.asciidoc[]
 include::security/update-user-profile-data.asciidoc[]

+ 1 - 1
x-pack/docs/en/rest-api/security/disable-user-profile.asciidoc

@@ -8,7 +8,7 @@
 beta::[]
 
 Disables a user profile so it's not visible in
-<<security-api-search-user-profile,user profile searches>>.
+<<security-api-suggest-user-profile,user profile searches>>.
 
 [[security-api-disable-user-profile-request]]
 ==== {api-request-title}

+ 1 - 1
x-pack/docs/en/rest-api/security/enable-user-profile.asciidoc

@@ -8,7 +8,7 @@
 beta::[]
 
 Enables a user profile so it's visible in
-<<security-api-search-user-profile,user profile searches>>.
+<<security-api-suggest-user-profile,user profile searches>>.
 
 [[security-api-enable-user-profile-request]]
 ==== {api-request-title}

+ 14 - 14
x-pack/docs/en/rest-api/security/search-user-profile.asciidoc → x-pack/docs/en/rest-api/security/suggest-user-profile.asciidoc

@@ -1,27 +1,27 @@
 [role="xpack"]
-[[security-api-search-user-profile]]
-=== Search user profile API
+[[security-api-suggest-user-profile]]
+=== Suggest user profile API
 ++++
-<titleabbrev>Search user profile</titleabbrev>
+<titleabbrev>Suggest user profile</titleabbrev>
 ++++
 
 beta::[]
 
-Searches for user profiles that match specified criteria.
+Get suggestions for user profiles that match specified search criteria.
 
-[[security-api-search-user-profile-request]]
+[[security-api-suggest-user-profile-request]]
 ==== {api-request-title}
 
-`GET /_security/profile/_search`
+`GET /_security/profile/_suggest`
 
-`POST /_security/profile/_search`
+`POST /_security/profile/_suggest`
 
-[[security-api-search-user-profile-prereqs]]
+[[security-api-suggest-user-profile-prereqs]]
 ==== {api-prereq-title}
 
 To use this API, you must have the `manage_user_profile` cluster privilege.
 
-[[security-api-search-user-profile-query-params]]
+[[security-api-suggest-user-profile-query-params]]
 ==== {api-query-parms-title}
 
 `data`::
@@ -30,7 +30,7 @@ the profile document. To return all content, use `data=*`. To return a
 subset of content, use `data=<key>` to retrieve the content nested under the
 specified `<key>`. Defaults to returning no content.
 
-[[security-api-search-user-profile-request-body]]
+[[security-api-suggest-user-profile-request-body]]
 ==== {api-request-body-title}
 
 `name`::
@@ -41,7 +41,7 @@ Query string used to match name-related fields in <<security-api-activate-user-p
 (Optional, integer)
 Number of profiles to return. Defaults to `10`.
 
-[[security-api-search-user-profile-response-body]]
+[[security-api-suggest-user-profile-response-body]]
 ==== {api-response-body-title}
 
 
@@ -57,15 +57,15 @@ Milliseconds it took {es} to execute the request.
 (array of objects)
 List of profile documents, ordered by relevance, that match the search criteria.
 
-[[security-api-search-user-profile-example]]
+[[security-api-suggest-user-profile-example]]
 ==== {api-examples-title}
 
-The following request searches for profile documents with name-related fields
+The following request get suggestions for profile documents with name-related fields
 matching `jack`:
 
 [source,console]
 ----
-POST /_security/profile/_search
+POST /_security/profile/_suggest
 {
   "name": "jack"
 }

+ 5 - 5
x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/security/action/profile/SearchProfilesAction.java → x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/security/action/profile/SuggestProfilesAction.java

@@ -9,12 +9,12 @@ package org.elasticsearch.xpack.core.security.action.profile;
 
 import org.elasticsearch.action.ActionType;
 
-public class SearchProfilesAction extends ActionType<SearchProfilesResponse> {
+public class SuggestProfilesAction extends ActionType<SuggestProfilesResponse> {
 
-    public static final String NAME = "cluster:admin/xpack/security/profile/search";
-    public static final SearchProfilesAction INSTANCE = new SearchProfilesAction();
+    public static final String NAME = "cluster:admin/xpack/security/profile/suggest";
+    public static final SuggestProfilesAction INSTANCE = new SuggestProfilesAction();
 
-    public SearchProfilesAction() {
-        super(NAME, SearchProfilesResponse::new);
+    public SuggestProfilesAction() {
+        super(NAME, SuggestProfilesResponse::new);
     }
 }

+ 3 - 3
x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/security/action/profile/SearchProfilesRequest.java → x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/security/action/profile/SuggestProfilesRequest.java

@@ -18,7 +18,7 @@ import java.util.Set;
 
 import static org.elasticsearch.action.ValidateActions.addValidationError;
 
-public class SearchProfilesRequest extends ActionRequest {
+public class SuggestProfilesRequest extends ActionRequest {
 
     private final Set<String> dataKeys;
     /**
@@ -27,13 +27,13 @@ public class SearchProfilesRequest extends ActionRequest {
     private final String name;
     private final int size;
 
-    public SearchProfilesRequest(Set<String> dataKeys, String name, int size) {
+    public SuggestProfilesRequest(Set<String> dataKeys, String name, int size) {
         this.dataKeys = Objects.requireNonNull(dataKeys, "data parameter must not be null");
         this.name = Objects.requireNonNull(name, "name must not be null");
         this.size = size;
     }
 
-    public SearchProfilesRequest(StreamInput in) throws IOException {
+    public SuggestProfilesRequest(StreamInput in) throws IOException {
         super(in);
         this.dataKeys = in.readSet(StreamInput::readString);
         this.name = in.readOptionalString();

+ 3 - 3
x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/security/action/profile/SearchProfilesResponse.java → x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/security/action/profile/SuggestProfilesResponse.java

@@ -18,19 +18,19 @@ import org.elasticsearch.xcontent.XContentBuilder;
 
 import java.io.IOException;
 
-public class SearchProfilesResponse extends ActionResponse implements ToXContentObject {
+public class SuggestProfilesResponse extends ActionResponse implements ToXContentObject {
 
     private final ProfileHit[] profileHits;
     private final long tookInMillis;
     private final TotalHits totalHits;
 
-    public SearchProfilesResponse(ProfileHit[] profileHits, long tookInMillis, TotalHits totalHits) {
+    public SuggestProfilesResponse(ProfileHit[] profileHits, long tookInMillis, TotalHits totalHits) {
         this.profileHits = profileHits;
         this.tookInMillis = tookInMillis;
         this.totalHits = totalHits;
     }
 
-    public SearchProfilesResponse(StreamInput in) throws IOException {
+    public SuggestProfilesResponse(StreamInput in) throws IOException {
         super(in);
         this.profileHits = in.readArray(ProfileHit::new, ProfileHit[]::new);
         this.tookInMillis = in.readVLong();

+ 2 - 2
x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/security/authz/privilege/WriteProfileDataPrivilegesTests.java

@@ -29,7 +29,7 @@ import org.elasticsearch.xcontent.XContentType;
 import org.elasticsearch.xpack.core.XPackClientPlugin;
 import org.elasticsearch.xpack.core.security.action.profile.ActivateProfileAction;
 import org.elasticsearch.xpack.core.security.action.profile.GetProfileAction;
-import org.elasticsearch.xpack.core.security.action.profile.SearchProfilesAction;
+import org.elasticsearch.xpack.core.security.action.profile.SuggestProfilesAction;
 import org.elasticsearch.xpack.core.security.action.profile.UpdateProfileDataAction;
 import org.elasticsearch.xpack.core.security.action.profile.UpdateProfileDataRequest;
 import org.elasticsearch.xpack.core.security.authc.Authentication;
@@ -121,7 +121,7 @@ public class WriteProfileDataPrivilegesTests extends ESTestCase {
         // different action name
         assertFalse(
             writeProfileDataPermission.check(
-                randomFrom(ActivateProfileAction.NAME, GetProfileAction.NAME, SearchProfilesAction.NAME),
+                randomFrom(ActivateProfileAction.NAME, GetProfileAction.NAME, SuggestProfilesAction.NAME),
                 updateProfileDataRequest,
                 authentication
             )

+ 3 - 3
x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/security/authz/store/ReservedRolesStoreTests.java

@@ -162,8 +162,8 @@ import org.elasticsearch.xpack.core.security.action.privilege.PutPrivilegesReque
 import org.elasticsearch.xpack.core.security.action.profile.ActivateProfileAction;
 import org.elasticsearch.xpack.core.security.action.profile.ActivateProfileRequest;
 import org.elasticsearch.xpack.core.security.action.profile.GetProfileAction;
-import org.elasticsearch.xpack.core.security.action.profile.SearchProfilesAction;
-import org.elasticsearch.xpack.core.security.action.profile.SearchProfilesRequest;
+import org.elasticsearch.xpack.core.security.action.profile.SuggestProfilesAction;
+import org.elasticsearch.xpack.core.security.action.profile.SuggestProfilesRequest;
 import org.elasticsearch.xpack.core.security.action.profile.UpdateProfileDataAction;
 import org.elasticsearch.xpack.core.security.action.profile.UpdateProfileDataRequest;
 import org.elasticsearch.xpack.core.security.action.role.PutRoleAction;
@@ -1672,7 +1672,7 @@ public class ReservedRolesStoreTests extends ESTestCase {
             is(true)
         );
         assertThat(superuserRole.cluster().check(GetProfileAction.NAME, mock(UpdateProfileDataRequest.class), authentication), is(true));
-        assertThat(superuserRole.cluster().check(SearchProfilesAction.NAME, mock(SearchProfilesRequest.class), authentication), is(true));
+        assertThat(superuserRole.cluster().check(SuggestProfilesAction.NAME, mock(SuggestProfilesRequest.class), authentication), is(true));
         assertThat(superuserRole.cluster().check(ActivateProfileAction.NAME, mock(ActivateProfileRequest.class), authentication), is(true));
 
         final Settings indexSettings = Settings.builder().put("index.version.created", Version.CURRENT).build();

+ 1 - 1
x-pack/plugin/security/qa/operator-privileges-tests/src/javaRestTest/java/org/elasticsearch/xpack/security/operator/Constants.java

@@ -197,7 +197,7 @@ public class Constants {
         "cluster:admin/xpack/security/profile/activate",
         "cluster:admin/xpack/security/profile/get",
         "cluster:admin/xpack/security/profile/put/data",
-        "cluster:admin/xpack/security/profile/search",
+        "cluster:admin/xpack/security/profile/suggest",
         "cluster:admin/xpack/security/profile/set_enabled",
         "cluster:admin/xpack/security/realm/cache/clear",
         "cluster:admin/xpack/security/role/delete",

+ 1 - 1
x-pack/plugin/security/qa/profile/src/javaRestTest/java/org/elasticsearch/xpack/security/profile/ProfileIT.java

@@ -144,7 +144,7 @@ public class ProfileIT extends ESRestTestCase {
     public void testSearchProfile() throws IOException {
         final Map<String, Object> activateProfileMap = doActivateProfile();
         final String uid = (String) activateProfileMap.get("uid");
-        final Request searchProfilesRequest1 = new Request(randomFrom("GET", "POST"), "_security/profile/_search");
+        final Request searchProfilesRequest1 = new Request(randomFrom("GET", "POST"), "_security/profile/_suggest");
         searchProfilesRequest1.setJsonEntity("""
             {
               "name": "rac",

+ 22 - 22
x-pack/plugin/security/src/internalClusterTest/java/org/elasticsearch/xpack/security/profile/ProfileIntegTests.java

@@ -19,11 +19,11 @@ import org.elasticsearch.xpack.core.security.action.profile.GetProfileAction;
 import org.elasticsearch.xpack.core.security.action.profile.GetProfileRequest;
 import org.elasticsearch.xpack.core.security.action.profile.GetProfilesResponse;
 import org.elasticsearch.xpack.core.security.action.profile.Profile;
-import org.elasticsearch.xpack.core.security.action.profile.SearchProfilesAction;
-import org.elasticsearch.xpack.core.security.action.profile.SearchProfilesRequest;
-import org.elasticsearch.xpack.core.security.action.profile.SearchProfilesResponse;
 import org.elasticsearch.xpack.core.security.action.profile.SetProfileEnabledAction;
 import org.elasticsearch.xpack.core.security.action.profile.SetProfileEnabledRequest;
+import org.elasticsearch.xpack.core.security.action.profile.SuggestProfilesAction;
+import org.elasticsearch.xpack.core.security.action.profile.SuggestProfilesRequest;
+import org.elasticsearch.xpack.core.security.action.profile.SuggestProfilesResponse;
 import org.elasticsearch.xpack.core.security.action.profile.UpdateProfileDataAction;
 import org.elasticsearch.xpack.core.security.action.profile.UpdateProfileDataRequest;
 import org.elasticsearch.xpack.core.security.action.user.PutUserAction;
@@ -235,7 +235,7 @@ public class ProfileIntegTests extends AbstractProfileIntegTestCase {
         );
     }
 
-    public void testSearchProfiles() {
+    public void testSuggestProfiles() {
         final String nativeRacUserPasswordHash = new String(getFastStoredHashAlgoForTests().hash(NATIVE_RAC_USER_PASSWORD));
         final Map<String, String> users = Map.of(
             "user_foo",
@@ -258,31 +258,31 @@ public class ProfileIntegTests extends AbstractProfileIntegTestCase {
             doActivateProfile(key, NATIVE_RAC_USER_PASSWORD);
         });
 
-        final SearchProfilesResponse.ProfileHit[] profiles1 = doSearch("");
+        final SuggestProfilesResponse.ProfileHit[] profiles1 = doSuggest("");
         assertThat(extractUsernames(profiles1), equalTo(users.keySet()));
 
-        final SearchProfilesResponse.ProfileHit[] profiles2 = doSearch(randomFrom("super admin", "admin super"));
+        final SuggestProfilesResponse.ProfileHit[] profiles2 = doSuggest(randomFrom("super admin", "admin super"));
         assertThat(extractUsernames(profiles2), equalTo(Set.of("user_bar", "user_qux")));
 
         // Prefix match on full name
-        final SearchProfilesResponse.ProfileHit[] profiles3 = doSearch("ver");
+        final SuggestProfilesResponse.ProfileHit[] profiles3 = doSuggest("ver");
         assertThat(extractUsernames(profiles3), equalTo(Set.of("user_foo", "user_baz")));
 
         // Prefix match on the username
-        final SearchProfilesResponse.ProfileHit[] profiles4 = doSearch("user");
+        final SuggestProfilesResponse.ProfileHit[] profiles4 = doSuggest("user");
         assertThat(extractUsernames(profiles4), equalTo(users.keySet()));
         // Documents scored higher are those with matches in more fields
         assertThat(extractUsernames(Arrays.copyOfRange(profiles4, 0, 2)), equalTo(Set.of("user_foo", "user_baz")));
 
         // Match of different terms on different fields
-        final SearchProfilesResponse.ProfileHit[] profiles5 = doSearch(randomFrom("admin very", "very admin"));
+        final SuggestProfilesResponse.ProfileHit[] profiles5 = doSuggest(randomFrom("admin very", "very admin"));
         assertThat(extractUsernames(profiles5), equalTo(users.keySet()));
 
         // Match email
-        final SearchProfilesResponse.ProfileHit[] profiles6 = doSearch(randomFrom("fooem", "fooemail"));
+        final SuggestProfilesResponse.ProfileHit[] profiles6 = doSuggest(randomFrom("fooem", "fooemail"));
         assertThat(extractUsernames(profiles6), equalTo(Set.of("user_foo")));
 
-        final SearchProfilesResponse.ProfileHit[] profiles7 = doSearch("example.org");
+        final SuggestProfilesResponse.ProfileHit[] profiles7 = doSuggest("example.org");
         assertThat(extractUsernames(profiles7), equalTo(users.keySet()));
     }
 
@@ -301,7 +301,7 @@ public class ProfileIntegTests extends AbstractProfileIntegTestCase {
         assertThat(getProfileIndexResponse().getIndices(), not(hasItemInArray(INTERNAL_SECURITY_PROFILE_INDEX_8)));
 
         // Search returns empty result
-        final SearchProfilesResponse.ProfileHit[] profiles1 = doSearch("");
+        final SuggestProfilesResponse.ProfileHit[] profiles1 = doSuggest("");
         assertThat(profiles1, emptyArray());
 
         // Ensure index does not exist
@@ -331,7 +331,7 @@ public class ProfileIntegTests extends AbstractProfileIntegTestCase {
     public void testSetEnabled() {
         final Profile profile1 = doActivateProfile(RAC_USER_NAME, TEST_PASSWORD_SECURE_STRING);
 
-        final SearchProfilesResponse.ProfileHit[] profileHits1 = doSearch(RAC_USER_NAME);
+        final SuggestProfilesResponse.ProfileHit[] profileHits1 = doSuggest(RAC_USER_NAME);
         assertThat(profileHits1, arrayWithSize(1));
         assertThat(profileHits1[0].profile().uid(), equalTo(profile1.uid()));
 
@@ -344,7 +344,7 @@ public class ProfileIntegTests extends AbstractProfileIntegTestCase {
         client().execute(SetProfileEnabledAction.INSTANCE, setProfileEnabledRequest1).actionGet();
 
         // No longer visible to search
-        final SearchProfilesResponse.ProfileHit[] profileHits2 = doSearch(RAC_USER_NAME);
+        final SuggestProfilesResponse.ProfileHit[] profileHits2 = doSuggest(RAC_USER_NAME);
         assertThat(profileHits2, emptyArray());
 
         // But can still direct get
@@ -359,7 +359,7 @@ public class ProfileIntegTests extends AbstractProfileIntegTestCase {
             WriteRequest.RefreshPolicy.IMMEDIATE
         );
         client().execute(SetProfileEnabledAction.INSTANCE, setProfileEnabledRequest2).actionGet();
-        final SearchProfilesResponse.ProfileHit[] profileHits3 = doSearch(RAC_USER_NAME);
+        final SuggestProfilesResponse.ProfileHit[] profileHits3 = doSuggest(RAC_USER_NAME);
         assertThat(profileHits3, arrayWithSize(1));
         assertThat(profileHits3[0].profile().uid(), equalTo(profile1.uid()));
 
@@ -375,17 +375,17 @@ public class ProfileIntegTests extends AbstractProfileIntegTestCase {
         );
     }
 
-    private SearchProfilesResponse.ProfileHit[] doSearch(String query) {
-        final SearchProfilesRequest searchProfilesRequest = new SearchProfilesRequest(Set.of(), query, 10);
-        final SearchProfilesResponse searchProfilesResponse = client().execute(SearchProfilesAction.INSTANCE, searchProfilesRequest)
+    private SuggestProfilesResponse.ProfileHit[] doSuggest(String query) {
+        final SuggestProfilesRequest suggestProfilesRequest = new SuggestProfilesRequest(Set.of(), query, 10);
+        final SuggestProfilesResponse suggestProfilesResponse = client().execute(SuggestProfilesAction.INSTANCE, suggestProfilesRequest)
             .actionGet();
-        assertThat(searchProfilesResponse.getTotalHits().relation, is(TotalHits.Relation.EQUAL_TO));
-        return searchProfilesResponse.getProfileHits();
+        assertThat(suggestProfilesResponse.getTotalHits().relation, is(TotalHits.Relation.EQUAL_TO));
+        return suggestProfilesResponse.getProfileHits();
     }
 
-    private Set<String> extractUsernames(SearchProfilesResponse.ProfileHit[] profileHits) {
+    private Set<String> extractUsernames(SuggestProfilesResponse.ProfileHit[] profileHits) {
         return Arrays.stream(profileHits)
-            .map(SearchProfilesResponse.ProfileHit::profile)
+            .map(SuggestProfilesResponse.ProfileHit::profile)
             .map(Profile::user)
             .map(Profile.ProfileUser::username)
             .collect(Collectors.toUnmodifiableSet());

+ 5 - 5
x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/Security.java

@@ -110,8 +110,8 @@ import org.elasticsearch.xpack.core.security.action.privilege.GetPrivilegesActio
 import org.elasticsearch.xpack.core.security.action.privilege.PutPrivilegesAction;
 import org.elasticsearch.xpack.core.security.action.profile.ActivateProfileAction;
 import org.elasticsearch.xpack.core.security.action.profile.GetProfileAction;
-import org.elasticsearch.xpack.core.security.action.profile.SearchProfilesAction;
 import org.elasticsearch.xpack.core.security.action.profile.SetProfileEnabledAction;
+import org.elasticsearch.xpack.core.security.action.profile.SuggestProfilesAction;
 import org.elasticsearch.xpack.core.security.action.profile.UpdateProfileDataAction;
 import org.elasticsearch.xpack.core.security.action.realm.ClearRealmCacheAction;
 import org.elasticsearch.xpack.core.security.action.role.ClearRolesCacheAction;
@@ -189,8 +189,8 @@ import org.elasticsearch.xpack.security.action.privilege.TransportGetPrivilegesA
 import org.elasticsearch.xpack.security.action.privilege.TransportPutPrivilegesAction;
 import org.elasticsearch.xpack.security.action.profile.TransportActivateProfileAction;
 import org.elasticsearch.xpack.security.action.profile.TransportGetProfileAction;
-import org.elasticsearch.xpack.security.action.profile.TransportSearchProfilesAction;
 import org.elasticsearch.xpack.security.action.profile.TransportSetProfileEnabledAction;
+import org.elasticsearch.xpack.security.action.profile.TransportSuggestProfilesAction;
 import org.elasticsearch.xpack.security.action.profile.TransportUpdateProfileDataAction;
 import org.elasticsearch.xpack.security.action.realm.TransportClearRealmCacheAction;
 import org.elasticsearch.xpack.security.action.role.TransportClearRolesCacheAction;
@@ -288,7 +288,7 @@ import org.elasticsearch.xpack.security.rest.action.profile.RestActivateProfileA
 import org.elasticsearch.xpack.security.rest.action.profile.RestDisableProfileAction;
 import org.elasticsearch.xpack.security.rest.action.profile.RestEnableProfileAction;
 import org.elasticsearch.xpack.security.rest.action.profile.RestGetProfileAction;
-import org.elasticsearch.xpack.security.rest.action.profile.RestSearchProfilesAction;
+import org.elasticsearch.xpack.security.rest.action.profile.RestSuggestProfilesAction;
 import org.elasticsearch.xpack.security.rest.action.profile.RestUpdateProfileDataAction;
 import org.elasticsearch.xpack.security.rest.action.realm.RestClearRealmCacheAction;
 import org.elasticsearch.xpack.security.rest.action.role.RestClearRolesCacheAction;
@@ -1235,7 +1235,7 @@ public class Security extends Plugin
                     new ActionHandler<>(GetProfileAction.INSTANCE, TransportGetProfileAction.class),
                     new ActionHandler<>(ActivateProfileAction.INSTANCE, TransportActivateProfileAction.class),
                     new ActionHandler<>(UpdateProfileDataAction.INSTANCE, TransportUpdateProfileDataAction.class),
-                    new ActionHandler<>(SearchProfilesAction.INSTANCE, TransportSearchProfilesAction.class),
+                    new ActionHandler<>(SuggestProfilesAction.INSTANCE, TransportSuggestProfilesAction.class),
                     new ActionHandler<>(SetProfileEnabledAction.INSTANCE, TransportSetProfileEnabledAction.class)
                 )
             ).toList();
@@ -1322,7 +1322,7 @@ public class Security extends Plugin
                     new RestGetProfileAction(settings, getLicenseState()),
                     new RestActivateProfileAction(settings, getLicenseState()),
                     new RestUpdateProfileDataAction(settings, getLicenseState()),
-                    new RestSearchProfilesAction(settings, getLicenseState()),
+                    new RestSuggestProfilesAction(settings, getLicenseState()),
                     new RestEnableProfileAction(settings, getLicenseState()),
                     new RestDisableProfileAction(settings, getLicenseState())
                 )

+ 8 - 8
x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/action/profile/TransportSearchProfilesAction.java → x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/action/profile/TransportSuggestProfilesAction.java

@@ -13,23 +13,23 @@ import org.elasticsearch.action.support.HandledTransportAction;
 import org.elasticsearch.common.inject.Inject;
 import org.elasticsearch.tasks.Task;
 import org.elasticsearch.transport.TransportService;
-import org.elasticsearch.xpack.core.security.action.profile.SearchProfilesAction;
-import org.elasticsearch.xpack.core.security.action.profile.SearchProfilesRequest;
-import org.elasticsearch.xpack.core.security.action.profile.SearchProfilesResponse;
+import org.elasticsearch.xpack.core.security.action.profile.SuggestProfilesAction;
+import org.elasticsearch.xpack.core.security.action.profile.SuggestProfilesRequest;
+import org.elasticsearch.xpack.core.security.action.profile.SuggestProfilesResponse;
 import org.elasticsearch.xpack.security.profile.ProfileService;
 
-public class TransportSearchProfilesAction extends HandledTransportAction<SearchProfilesRequest, SearchProfilesResponse> {
+public class TransportSuggestProfilesAction extends HandledTransportAction<SuggestProfilesRequest, SuggestProfilesResponse> {
 
     private final ProfileService profileService;
 
     @Inject
-    public TransportSearchProfilesAction(TransportService transportService, ActionFilters actionFilters, ProfileService profileService) {
-        super(SearchProfilesAction.NAME, transportService, actionFilters, SearchProfilesRequest::new);
+    public TransportSuggestProfilesAction(TransportService transportService, ActionFilters actionFilters, ProfileService profileService) {
+        super(SuggestProfilesAction.NAME, transportService, actionFilters, SuggestProfilesRequest::new);
         this.profileService = profileService;
     }
 
     @Override
-    protected void doExecute(Task task, SearchProfilesRequest request, ActionListener<SearchProfilesResponse> listener) {
-        profileService.searchProfile(request, listener);
+    protected void doExecute(Task task, SuggestProfilesRequest request, ActionListener<SuggestProfilesResponse> listener) {
+        profileService.suggestProfile(request, listener);
     }
 }

+ 13 - 9
x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/profile/ProfileService.java

@@ -52,8 +52,8 @@ import org.elasticsearch.xcontent.XContentParser;
 import org.elasticsearch.xcontent.XContentParserConfiguration;
 import org.elasticsearch.xcontent.XContentType;
 import org.elasticsearch.xpack.core.security.action.profile.Profile;
-import org.elasticsearch.xpack.core.security.action.profile.SearchProfilesRequest;
-import org.elasticsearch.xpack.core.security.action.profile.SearchProfilesResponse;
+import org.elasticsearch.xpack.core.security.action.profile.SuggestProfilesRequest;
+import org.elasticsearch.xpack.core.security.action.profile.SuggestProfilesResponse;
 import org.elasticsearch.xpack.core.security.action.profile.UpdateProfileDataRequest;
 import org.elasticsearch.xpack.core.security.authc.Authentication;
 import org.elasticsearch.xpack.core.security.authc.AuthenticationContext;
@@ -174,10 +174,14 @@ public class ProfileService {
         );
     }
 
-    public void searchProfile(SearchProfilesRequest request, ActionListener<SearchProfilesResponse> listener) {
+    public void suggestProfile(SuggestProfilesRequest request, ActionListener<SuggestProfilesResponse> listener) {
         tryFreezeAndCheckIndex(listener.map(response -> {
             assert response == null : "only null response can reach here";
-            return new SearchProfilesResponse(new SearchProfilesResponse.ProfileHit[] {}, 0, new TotalHits(0, TotalHits.Relation.EQUAL_TO));
+            return new SuggestProfilesResponse(
+                new SuggestProfilesResponse.ProfileHit[] {},
+                0,
+                new TotalHits(0, TotalHits.Relation.EQUAL_TO)
+            );
         })).ifPresent(frozenProfileIndex -> {
             final BoolQueryBuilder query = QueryBuilders.boolQuery().filter(QueryBuilders.termQuery("user_profile.enabled", true));
             if (Strings.hasText(request.getName())) {
@@ -211,11 +215,11 @@ public class ProfileService {
                     ActionListener.wrap(searchResponse -> {
                         final SearchHits searchHits = searchResponse.getHits();
                         final SearchHit[] hits = searchHits.getHits();
-                        final SearchProfilesResponse.ProfileHit[] profileHits;
+                        final SuggestProfilesResponse.ProfileHit[] profileHits;
                         if (hits.length == 0) {
-                            profileHits = new SearchProfilesResponse.ProfileHit[0];
+                            profileHits = new SuggestProfilesResponse.ProfileHit[0];
                         } else {
-                            profileHits = new SearchProfilesResponse.ProfileHit[hits.length];
+                            profileHits = new SuggestProfilesResponse.ProfileHit[hits.length];
                             for (int i = 0; i < hits.length; i++) {
                                 final SearchHit hit = hits[i];
                                 final VersionedDocument versionedDocument = new VersionedDocument(
@@ -223,14 +227,14 @@ public class ProfileService {
                                     hit.getPrimaryTerm(),
                                     hit.getSeqNo()
                                 );
-                                profileHits[i] = new SearchProfilesResponse.ProfileHit(
+                                profileHits[i] = new SuggestProfilesResponse.ProfileHit(
                                     versionedDocument.toProfile(request.getDataKeys()),
                                     hit.getScore()
                                 );
                             }
                         }
                         listener.onResponse(
-                            new SearchProfilesResponse(profileHits, searchResponse.getTook().millis(), searchHits.getTotalHits())
+                            new SuggestProfilesResponse(profileHits, searchResponse.getTook().millis(), searchHits.getTotalHits())
                         );
                     }, listener::onFailure)
                 )

+ 9 - 9
x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/rest/action/profile/RestSearchProfilesAction.java → x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/rest/action/profile/RestSuggestProfilesAction.java

@@ -15,8 +15,8 @@ import org.elasticsearch.rest.RestRequest;
 import org.elasticsearch.rest.action.RestToXContentListener;
 import org.elasticsearch.xcontent.ConstructingObjectParser;
 import org.elasticsearch.xcontent.ParseField;
-import org.elasticsearch.xpack.core.security.action.profile.SearchProfilesAction;
-import org.elasticsearch.xpack.core.security.action.profile.SearchProfilesRequest;
+import org.elasticsearch.xpack.core.security.action.profile.SuggestProfilesAction;
+import org.elasticsearch.xpack.core.security.action.profile.SuggestProfilesRequest;
 import org.elasticsearch.xpack.security.rest.action.SecurityBaseRestHandler;
 
 import java.io.IOException;
@@ -27,10 +27,10 @@ import static org.elasticsearch.rest.RestRequest.Method.GET;
 import static org.elasticsearch.rest.RestRequest.Method.POST;
 import static org.elasticsearch.xcontent.ConstructingObjectParser.optionalConstructorArg;
 
-public class RestSearchProfilesAction extends SecurityBaseRestHandler {
+public class RestSuggestProfilesAction extends SecurityBaseRestHandler {
 
     static final ConstructingObjectParser<Payload, Void> PARSER = new ConstructingObjectParser<>(
-        "search_profile_request_payload",
+        "suggest_profile_request_payload",
         a -> new Payload((String) a[0], (Integer) a[1])
     );
 
@@ -39,18 +39,18 @@ public class RestSearchProfilesAction extends SecurityBaseRestHandler {
         PARSER.declareInt(optionalConstructorArg(), new ParseField("size"));
     }
 
-    public RestSearchProfilesAction(Settings settings, XPackLicenseState licenseState) {
+    public RestSuggestProfilesAction(Settings settings, XPackLicenseState licenseState) {
         super(settings, licenseState);
     }
 
     @Override
     public List<Route> routes() {
-        return List.of(new Route(GET, "/_security/profile/_search"), new Route(POST, "/_security/profile/_search"));
+        return List.of(new Route(GET, "/_security/profile/_suggest"), new Route(POST, "/_security/profile/_suggest"));
     }
 
     @Override
     public String getName() {
-        return "xpack_security_search_profile";
+        return "xpack_security_suggest_profile";
     }
 
     @Override
@@ -60,8 +60,8 @@ public class RestSearchProfilesAction extends SecurityBaseRestHandler {
             ? PARSER.parse(request.contentOrSourceParamParser(), null)
             : new Payload(null, null);
 
-        final SearchProfilesRequest searchProfilesRequest = new SearchProfilesRequest(dataKeys, payload.name(), payload.size());
-        return channel -> client.execute(SearchProfilesAction.INSTANCE, searchProfilesRequest, new RestToXContentListener<>(channel));
+        final SuggestProfilesRequest suggestProfilesRequest = new SuggestProfilesRequest(dataKeys, payload.name(), payload.size());
+        return channel -> client.execute(SuggestProfilesAction.INSTANCE, suggestProfilesRequest, new RestToXContentListener<>(channel));
     }
 
     record Payload(String name, Integer size) {

+ 11 - 11
x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/rest/action/profile/RestSearchProfilesActionTests.java → x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/rest/action/profile/RestSuggestProfilesActionTests.java

@@ -14,8 +14,8 @@ import org.elasticsearch.test.rest.FakeRestRequest;
 import org.elasticsearch.test.rest.RestActionTestCase;
 import org.elasticsearch.xcontent.NamedXContentRegistry;
 import org.elasticsearch.xpack.core.XPackSettings;
-import org.elasticsearch.xpack.core.security.action.profile.SearchProfilesRequest;
-import org.elasticsearch.xpack.core.security.action.profile.SearchProfilesResponse;
+import org.elasticsearch.xpack.core.security.action.profile.SuggestProfilesRequest;
+import org.elasticsearch.xpack.core.security.action.profile.SuggestProfilesResponse;
 import org.junit.Before;
 
 import java.util.HashMap;
@@ -26,21 +26,21 @@ import static org.hamcrest.Matchers.equalTo;
 import static org.hamcrest.Matchers.instanceOf;
 import static org.mockito.Mockito.mock;
 
-public class RestSearchProfilesActionTests extends RestActionTestCase {
+public class RestSuggestProfilesActionTests extends RestActionTestCase {
     private Settings settings;
     private XPackLicenseState licenseState;
-    private AtomicReference<SearchProfilesRequest> requestHolder;
+    private AtomicReference<SuggestProfilesRequest> requestHolder;
 
     @Before
     public void init() {
         settings = Settings.builder().put(XPackSettings.SECURITY_ENABLED.getKey(), true).build();
         licenseState = mock(XPackLicenseState.class);
         requestHolder = new AtomicReference<>();
-        controller().registerHandler(new RestSearchProfilesAction(settings, licenseState));
+        controller().registerHandler(new RestSuggestProfilesAction(settings, licenseState));
         verifyingClient.setExecuteVerifier(((actionType, actionRequest) -> {
-            assertThat(actionRequest, instanceOf(SearchProfilesRequest.class));
-            requestHolder.set((SearchProfilesRequest) actionRequest);
-            return mock(SearchProfilesResponse.class);
+            assertThat(actionRequest, instanceOf(SuggestProfilesRequest.class));
+            requestHolder.set((SuggestProfilesRequest) actionRequest);
+            return mock(SuggestProfilesResponse.class);
         }));
     }
 
@@ -51,11 +51,11 @@ public class RestSearchProfilesActionTests extends RestActionTestCase {
         );
         final FakeRestRequest restRequest = new FakeRestRequest.Builder(NamedXContentRegistry.EMPTY).withMethod(
             randomFrom(RestRequest.Method.GET, RestRequest.Method.POST)
-        ).withPath("/_security/profile/_search").withParams(params).build();
+        ).withPath("/_security/profile/_suggest").withParams(params).build();
 
         dispatchRequest(restRequest);
 
-        final SearchProfilesRequest searchProfilesRequest = requestHolder.get();
-        assertThat(searchProfilesRequest.getName(), equalTo(expectedName));
+        final SuggestProfilesRequest suggestProfilesRequest = requestHolder.get();
+        assertThat(suggestProfilesRequest.getName(), equalTo(expectedName));
     }
 }

+ 2 - 2
x-pack/plugin/src/yamlRestTest/resources/rest-api-spec/test/user_profile/10_basic.yml

@@ -156,7 +156,7 @@ teardown:
   - is_true: "$profile.enabled"
 
 ---
-"Test search user profile":
+"Test suggest user profile":
   - do:
       security.activate_user_profile:
         body: >
@@ -168,7 +168,7 @@ teardown:
   - set: { uid: profile_uid }
 
   - do:
-      security.search_user_profiles:
+      security.suggest_user_profiles:
         body: >
           {
             "name": "joe",