### Description

Currently, `text_expansion` queries are limited to using rank_features field types.

As we [brought back sparse_vector](https://github.com/elastic/elasticsearch/issues/98104) field type, we want text_expansion queries to be able to work with `sparse_vector` fields as well.

`rank_features` field type should keep being usable in `text_expansion` queries. We don't want to deprecate until the UI and clients that set this up are ready to migrate to `sparse_vector`.
x-pack/plugin/ml/qa/native-multi-node-tests/src/javaRestTest/java/org/elasticsearch/xpack/ml/integration/TextExpansionQueryIT.java
* The model was created using this simple Python code.
 * The saved TorchScript model is then base64 encoded and hardcoded
 * for use in the test.
 *
 * ## Start Python
 * import torch
 * from torch import Tensor
 * from typing import Optional
 * class TinyTextExpansion(torch.nn.Module):
    def forward(self,
         input_ids: Tensor,
         token_type_ids: Optional[Tensor] = None,
         position_ids: Optional[Tensor] = None,
         inputs_embeds: Optional[Tensor] = None):
         torch.random.manual_seed(hash(str(input_ids)))
         weights = torch.zeros(1, input_ids.max() + 1)
         for i in input_ids:
             weights[0][i] = 1.0
        return weights
 if __name__ == '__main__':
     tte = TinyTextExpansion()
     tte.eval()
     input_ids = torch.tensor([6, 2, 7, 4, 10])
     the_rest = torch.ones(11)
     traced_model =  torch.jit.script(tte, (input_ids, the_rest, the_rest, the_rest))
     torch.jit.save(traced_model, "simplemodel.pt")
 * ## End Python
 */
public class TextExpansionQueryIT extends PyTorchModelRestTestCase {
    static final String BASE_64_ENCODED_MODEL = "UEsDBAAACAgAAAAAAAAAAAAAAAAAA"