### 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
}
    }
    public void testWithDotsInTokenNames() throws IOException {
        String modelId = "text-expansion-dots-in-tokens";
        String indexName = modelId + "-index";
        createTextExpansionModel(modelId);
        putModelDefinition(modelId, BASE_64_ENCODED_MODEL, RAW_MODEL_SIZE);
        putVocabulary(List.of("these", "are", "my", "words", "the", "washing", "machine", ".", "##."), modelId);
        startDeployment(modelId);
        
        List<String> inputs = List.of("these are my words.");
        
        createRankFeaturesIndex(indexName);
        var pipelineId = putPipeline(modelId);
        bulkIndexThroughPipeline(inputs, indexName, pipelineId);
        
        for (var input : inputs) {
            var textExpansionSearchResponse = textExpansionSearch(indexName, input, modelId, "ml.tokens");
            assertOkWithErrorMessage(textExpansionSearchResponse);
            Map<String, Object> responseMap = responseAsMap(textExpansionSearchResponse);
            @SuppressWarnings("unchecked")
            List<Map<String, Object>> hits = (List<Map<String, Object>>) MapHelper.dig("hits.hits", responseMap);
            Map<String, Object> topHit = hits.get(0);
            String sourceText = (String) MapHelper.dig("_source.text_field", topHit);
            assertEquals(input, sourceText);
            
            Object s = MapHelper.dig("_source.ml.tokens.__", topHit);
            assertNotNull(s);
        }
    }