# Dynamic mapping of dense\_vector

**URL:** https://discuss.elastic.co/t/dynamic-mapping-of-dense-vector/357559
**Category:** Elasticsearch
**Created:** [April 17, 2024, 5:21am UTC](https://discuss.elastic.co/t/dynamic-mapping-of-dense-vector/357559 "2024-04-17T05:21:50Z")
**Posts on this page:** 8
**Page:** 1

<div class="post-metadata">

### Author: ![dhrchatt](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dhrchatt/32/46374_2.png) [@dhrchatt](https://discuss.elastic.co/u/dhrchatt)
#### Post date: [April 17, 2024, 5:21am UTC](https://discuss.elastic.co/t/dynamic-mapping-of-dense-vector/357559/1 "2024-04-17T05:21:51Z")

</div>

I have a float which I want to map to dense\_vector type field. I want to use dynamic mapping but it is dynamically always mapped to float type. Is there a way to map to dense\_vector type when I am using dynamic mapping for creating the index ?

---

<div class="post-metadata">

### Author: ![Christian\_Dahlqvist](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/christian_dahlqvist/32/4617_2.png) [@Christian\_Dahlqvist](https://discuss.elastic.co/u/Christian_Dahlqvist)
#### Post date: [April 17, 2024, 5:31am UTC](https://discuss.elastic.co/t/dynamic-mapping-of-dense-vector/357559/2 "2024-04-17T05:31:54Z")

</div>

According to [this thread](https://discuss.elastic.co/t/dense-vector-type-changes-to-float-after-loading-the-data/350309) dynamic mapping of vectors was added in Elasticsearch 8.11. Are you by any chance on an earlier version?

---

<div class="post-metadata">

### Author: ![Kathleen\_DeRusso](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/kathleen_derusso/32/132039_2.png) [@Kathleen\_DeRusso](https://discuss.elastic.co/u/Kathleen_DeRusso)
#### Post date: [April 17, 2024, 12:01pm UTC](https://discuss.elastic.co/t/dynamic-mapping-of-dense-vector/357559/3 "2024-04-17T12:01:32Z")

</div>

As @Christian_Dahlqvist said, dynamic mapping of [dense vectors](https://www.elastic.co/guide/en/elasticsearch/reference/current/dense-vector.html) was introduced in 8.11.0 with float arrays \> size 128 dynamically mapped to `dense_vector`. If you're using a version \>8.11.0 and seeing an issue with this dynamic mapping, it would be helpful to see an example of what you're sending in that's not being mapped correctly. Thank you!

---

<div class="post-metadata">

### Author: ![dhrchatt](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dhrchatt/32/46374_2.png) [@dhrchatt](https://discuss.elastic.co/u/dhrchatt)
#### Post date: [April 18, 2024, 4:36am UTC](https://discuss.elastic.co/t/dynamic-mapping-of-dense-vector/357559/4 "2024-04-18T04:36:51Z")

</div>

I am using ES version 8.13.2, inserting dense\_vector (double) data using java client. It creates index with dynamic mapping but type of my\_vector field is "float". I want my\_vector field type to be "dense\_vector" with dynamic mapping.

```auto
import org.apache.http.HttpHost;
import org.elasticsearch.client.RestClient;

import co.elastic.clients.elasticsearch.ElasticsearchClient;
import co.elastic.clients.elasticsearch._types.ElasticsearchException;
import co.elastic.clients.json.jackson.JacksonJsonpMapper;
import co.elastic.clients.transport.ElasticsearchTransport;
import co.elastic.clients.transport.endpoints.BooleanResponse;
import co.elastic.clients.transport.rest_client.RestClientTransport;
import co.elastic.clients.elasticsearch.core.*;

public class ElasticsearchUtil {
	
	private ElasticsearchClient client;
	private BulkRequest.Builder builder = new BulkRequest.Builder();
	
	public void connect() {
		RestClient restClient = RestClient.builder(new HttpHost("localhost", 9200)).build();
		ElasticsearchTransport transport = new RestClientTransport(restClient, new JacksonJsonpMapper());
		client = new ElasticsearchClient(transport);
	}

	public void insert(DenseVec vec) {
		try {
			client.index(i -> i
					.index("my-index")
					.id("1")
					.document(vec));
			System.out.println("Successfully inserted");
			
		} catch (ElasticsearchException | IOException e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		ElasticsearchUtil util = new ElasticsearchUtil();
		util.connect();
		util.insert(new DenseVec("test data", new double[] {1234567.5678878, 1234567.2378665, 1234567.85987986}));
	}
}

class DenseVec {
	private double[] my_vector;
	private String my_text;
	
	public DenseVec(String my_text, double[] my_vector) {
		this.my_vector = my_vector;
		this.my_text = my_text;
	}
	
	public double[] getMy_vector() {
		return my_vector;
	}
	public void setMy_vector(double[] my_vector) {
		this.my_vector = my_vector;
	}
	public String getMy_text() {
		return my_text;
	}
	public void setMy_text(String my_text) {
		this.my_text = my_text;
	}
}

```

The mapping of dynamically created index is :-

```auto
curl -X GET "localhost:9200/my-index/_mappings?pretty"
{
  "my-index" : {
    "mappings" : {
      "properties" : {
        "my_text" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        },
        "my_vector" : {
          "type" : "float" -----> (I want this to be dense_vector type)
        }
      }
    }
  }
}

```

---

<div class="post-metadata">

### Author: ![Christian\_Dahlqvist](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/christian_dahlqvist/32/4617_2.png) [@Christian\_Dahlqvist](https://discuss.elastic.co/u/Christian_Dahlqvist)
#### Post date: [April 18, 2024, 5:03am UTC](https://discuss.elastic.co/t/dynamic-mapping-of-dense-vector/357559/5 "2024-04-18T05:03:36Z")

</div>

What is the length of your vector?

---

<div class="post-metadata">

### Author: ![dhrchatt](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dhrchatt/32/46374_2.png) [@dhrchatt](https://discuss.elastic.co/u/dhrchatt)
#### Post date: [April 18, 2024, 9:33am UTC](https://discuss.elastic.co/t/dynamic-mapping-of-dense-vector/357559/6 "2024-04-18T09:33:59Z")

</div>

In above example it is of length 3....but it may contain variable length vectors.

---

<div class="post-metadata">

### Author: ![Christian\_Dahlqvist](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/christian_dahlqvist/32/4617_2.png) [@Christian\_Dahlqvist](https://discuss.elastic.co/u/Christian_Dahlqvist)
#### Post date: [April 18, 2024, 9:42am UTC](https://discuss.elastic.co/t/dynamic-mapping-of-dense-vector/357559/7 "2024-04-18T09:42:19Z")

</div>

As Kathleen pointed out, the dynamic mapping only maps arrays with a length greater than 128 as vectors. If you have shorter vectors you need to map them explicitly.

---

<div class="post-metadata">

### Author: ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)
#### Post date: [May 16, 2024, 9:43am UTC](https://discuss.elastic.co/t/dynamic-mapping-of-dense-vector/357559/8 "2024-05-16T09:43:17Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
