Mapping for Java HashMap


(Peter Webber) #1

I had a look at the mapping ES created automatically for one of my indices,
and found something that's not quite right:

....
"annotations" : {
"properties" : {
"ids" : {
"properties" : {
"hashMap" : {
"properties" : {
"N_10290607" : {
"type" : "double"
},
"A_1038408" : {
"type" : "double"
},
"A_11585994" : {
"type" : "double"
},
"B_1245677" : {
"type" : "double"
},
"B_1269810" : {
"type" : "double"
},
"C_15680034" : {
"type" : "double"
},
"N_1654171" : {
"type" : "double"
},
...

I use Gson to convert Java classes to Json and then directly put them into
ES. One of the classes I use has a HashMap<String, Double> as a central
piece, where it stores its key-value pairs. It's really just that: the keys
are stings, the values doubles. ES however creates a mapping for every key
of the hashmap as you can see above.

Does someone here know what mapping I need to define to avoid that?

Also: Can I change this mapping on the already existing index, or do I have
to create a new index, then create a mapping, then copy over the data from
the old index?

Many Thanks!

--
You received this message because you are subscribed to the Google Groups "elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elasticsearch+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/4cfa6af7-4329-4edc-b4dc-385a4a38714d%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


(Oliver B. Fischer) #2

Hi Peter,

ES allows you to defined dynamic mappings there you can determine the
mapping of a property based on the evaluation of some conditions.

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-dynamic-mapping.html

Oliver

Am 12.01.14 17:16, schrieb Peter Webber:

I had a look at the mapping ES created automatically for one of my
indices, and found something that's not quite right:

....
||| "annotations"| |: { |
|||"properties"| |: { |
|||"ids"| |: { |
|||"properties"| |: { |
|||"hashMap"| |: { |
|||"properties"| |: { |
|||"N_10290607"| |: { |
|||"type"| |: ||"double"|
|||}, |
|||"A_1038408"| |: { |
|||"type"| |: ||"double"|
|||}, |
|||"A_11585994"| |: { |
|||"type"| |: ||"double"|
|||}, |
|||"B_1245677"| |: { |
|||"type"| |: ||"double"|
|||}, |
|||"B_1269810"| |: { |
|||"type"| |: ||"double"|
|||}, |
|||"C_15680034"| |: { |
|||"type"| |: ||"double"|
|||}, |
|||"N_1654171"| |: { |
|||"type"| |: ||"double"|
|||},
...

I use Gson to convert Java classes to Json and then directly put them
into ES. One of the classes I use has a HashMap<String, Double> as a
central piece, where it stores its key-value pairs. It's really just
that: the keys are stings, the values doubles. ES however creates a
mapping for every key of the hashmap as you can see above.

Does someone here know what mapping I need to define to avoid that?

Also: Can I change this mapping on the already existing index, or do I
have to create a new index, then create a mapping, then copy over the
data from the old index?

Many Thanks!
|

--
You received this message because you are subscribed to the Google
Groups "elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to elasticsearch+unsubscribe@googlegroups.com.
To view this discussion on the web visit
https://groups.google.com/d/msgid/elasticsearch/4cfa6af7-4329-4edc-b4dc-385a4a38714d%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

--
You received this message because you are subscribed to the Google Groups "elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elasticsearch+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/52D3BCAD.5060208%40swe-blog.net.
For more options, visit https://groups.google.com/groups/opt_out.


(Alexander Reelsen) #3

Hey Peter,

can you tell me, where your problem with the above approach actually is?
You feed a number of key/value pairs into elasticsearch, each key and each
value is evaluated by its type and then put into the mapping, as each key
becomes an own field in elasticsearch, which can be searched for. Wondering
why this is a problem for you? Or why do you want to avoid that?

Also, where and how do you want to change the mapping to?

I am a bit confused what and why you are expecting to be different than it
actually is. Maybe you should not think in java data structures but rather
in JSON, which is being indexed and needs to create a mapping in order to
be able to search for it. Happy to help, if I understand what you are
trying to do. Please elaborate.

--Alex

On Mon, Jan 13, 2014 at 11:15 AM, Oliver B. Fischer
mailsink@swe-blog.netwrote:

Hi Peter,

ES allows you to defined dynamic mappings there you can determine the
mapping of a property based on the evaluation of some conditions.

http://www.elasticsearch.org/guide/en/elasticsearch/
reference/current/mapping-dynamic-mapping.html

Oliver

Am 12.01.14 17:16, schrieb Peter Webber:

I had a look at the mapping ES created automatically for one of my
indices, and found something that's not quite right:

....
||| "annotations"| |: { |
|||"properties"| |: { |
|||"ids"| |: { |
|||"properties"| |: { |
|||"hashMap"| |: { |
|||"properties"| |: { |
|||"N_10290607"| |: { |
|||"type"| |: ||"double"|
|||}, |
|||"A_1038408"| |: { |
|||"type"| |: ||"double"|
|||}, |
|||"A_11585994"| |: { |
|||"type"| |: ||"double"|
|||}, |
|||"B_1245677"| |: { |
|||"type"| |: ||"double"|
|||}, |
|||"B_1269810"| |: { |
|||"type"| |: ||"double"|
|||}, |
|||"C_15680034"| |: { |
|||"type"| |: ||"double"|
|||}, |
|||"N_1654171"| |: { |
|||"type"| |: ||"double"|
|||},
...

I use Gson to convert Java classes to Json and then directly put them
into ES. One of the classes I use has a HashMap<String, Double> as a
central piece, where it stores its key-value pairs. It's really just
that: the keys are stings, the values doubles. ES however creates a
mapping for every key of the hashmap as you can see above.

Does someone here know what mapping I need to define to avoid that?

Also: Can I change this mapping on the already existing index, or do I
have to create a new index, then create a mapping, then copy over the
data from the old index?

Many Thanks!
|

--
You received this message because you are subscribed to the Google
Groups "elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to elasticsearch+unsubscribe@googlegroups.com.
To view this discussion on the web visit
https://groups.google.com/d/msgid/elasticsearch/4cfa6af7-
4329-4edc-b4dc-385a4a38714d%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

--
You received this message because you are subscribed to the Google Groups
"elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an
email to elasticsearch+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/
msgid/elasticsearch/52D3BCAD.5060208%40swe-blog.net.

For more options, visit https://groups.google.com/groups/opt_out.

--
You received this message because you are subscribed to the Google Groups "elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elasticsearch+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/CAGCwEM_i9KWgu2ZQmBqSFBeDyMPB2zCfY5Q_dLrG9-x%2Bh2QFFA%40mail.gmail.com.
For more options, visit https://groups.google.com/groups/opt_out.


(Peter Webber) #4

Hi Alex,

thanks for your reply first of all. The problem is that I will have
millions of keys, and that ES creates a mapping for each. That will bloat
the mappings data structure and probably lead to some memory and/or
performance issues somewhere (I don't know enough about ES internals, to
know precisely where, but it cannot be good to have a few million entries
in the mapping where one would do.)

Hope that helps!
Peter

Am Dienstag, 14. Januar 2014 13:01:22 UTC+1 schrieb Alexander Reelsen:

Hey Peter,

can you tell me, where your problem with the above approach actually is?
You feed a number of key/value pairs into elasticsearch, each key and each
value is evaluated by its type and then put into the mapping, as each key
becomes an own field in elasticsearch, which can be searched for. Wondering
why this is a problem for you? Or why do you want to avoid that?

Also, where and how do you want to change the mapping to?

I am a bit confused what and why you are expecting to be different than it
actually is. Maybe you should not think in java data structures but rather
in JSON, which is being indexed and needs to create a mapping in order to
be able to search for it. Happy to help, if I understand what you are
trying to do. Please elaborate.

--Alex

On Mon, Jan 13, 2014 at 11:15 AM, Oliver B. Fischer <mail...@swe-blog.net<javascript:>

wrote:

Hi Peter,

ES allows you to defined dynamic mappings there you can determine the
mapping of a property based on the evaluation of some conditions.

http://www.elasticsearch.org/guide/en/elasticsearch/
reference/current/mapping-dynamic-mapping.html

Oliver

Am 12.01.14 17:16, schrieb Peter Webber:

I had a look at the mapping ES created automatically for one of my
indices, and found something that's not quite right:

....
||| "annotations"| |: { |
|||"properties"| |: { |
|||"ids"| |: { |
|||"properties"| |: { |
|||"hashMap"| |: { |
|||"properties"| |: { |
|||"N_10290607"| |: { |
|||"type"| |: ||"double"|
|||}, |
|||"A_1038408"| |: { |
|||"type"| |: ||"double"|
|||}, |
|||"A_11585994"| |: { |
|||"type"| |: ||"double"|
|||}, |
|||"B_1245677"| |: { |
|||"type"| |: ||"double"|
|||}, |
|||"B_1269810"| |: { |
|||"type"| |: ||"double"|
|||}, |
|||"C_15680034"| |: { |
|||"type"| |: ||"double"|
|||}, |
|||"N_1654171"| |: { |
|||"type"| |: ||"double"|
|||},
...

I use Gson to convert Java classes to Json and then directly put them
into ES. One of the classes I use has a HashMap<String, Double> as a
central piece, where it stores its key-value pairs. It's really just
that: the keys are stings, the values doubles. ES however creates a
mapping for every key of the hashmap as you can see above.

Does someone here know what mapping I need to define to avoid that?

Also: Can I change this mapping on the already existing index, or do I
have to create a new index, then create a mapping, then copy over the
data from the old index?

Many Thanks!
|

--
You received this message because you are subscribed to the Google
Groups "elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to elasticsearc...@googlegroups.com <javascript:>.
To view this discussion on the web visit
https://groups.google.com/d/msgid/elasticsearch/4cfa6af7-
4329-4edc-b4dc-385a4a38714d%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

--
You received this message because you are subscribed to the Google Groups
"elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an
email to elasticsearc...@googlegroups.com <javascript:>.
To view this discussion on the web visit https://groups.google.com/d/
msgid/elasticsearch/52D3BCAD.5060208%40swe-blog.net.

For more options, visit https://groups.google.com/groups/opt_out.

--
You received this message because you are subscribed to the Google Groups "elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elasticsearch+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/d31222dc-8263-4d8f-adac-01ec9ea787cd%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


(sunshine) #5

Hey Peter,

Did you find a resolution for Hashmap mappings? Looking for the same thing.

Thanks,
Sangita.

On Tuesday, January 14, 2014 9:03:35 AM UTC-5, Peter Webber wrote:

Hi Alex,

thanks for your reply first of all. The problem is that I will have
millions of keys, and that ES creates a mapping for each. That will bloat
the mappings data structure and probably lead to some memory and/or
performance issues somewhere (I don't know enough about ES internals, to
know precisely where, but it cannot be good to have a few million entries
in the mapping where one would do.)

Hope that helps!
Peter

Am Dienstag, 14. Januar 2014 13:01:22 UTC+1 schrieb Alexander Reelsen:

Hey Peter,

can you tell me, where your problem with the above approach actually is?
You feed a number of key/value pairs into elasticsearch, each key and each
value is evaluated by its type and then put into the mapping, as each key
becomes an own field in elasticsearch, which can be searched for. Wondering
why this is a problem for you? Or why do you want to avoid that?

Also, where and how do you want to change the mapping to?

I am a bit confused what and why you are expecting to be different than
it actually is. Maybe you should not think in java data structures but
rather in JSON, which is being indexed and needs to create a mapping in
order to be able to search for it. Happy to help, if I understand what you
are trying to do. Please elaborate.

--Alex

On Mon, Jan 13, 2014 at 11:15 AM, Oliver B. Fischer <mail...@swe-blog.net

wrote:

Hi Peter,

ES allows you to defined dynamic mappings there you can determine the
mapping of a property based on the evaluation of some conditions.

http://www.elasticsearch.org/guide/en/elasticsearch/
reference/current/mapping-dynamic-mapping.html

Oliver

Am 12.01.14 17:16, schrieb Peter Webber:

I had a look at the mapping ES created automatically for one of my
indices, and found something that's not quite right:

....
||| "annotations"| |: { |
|||"properties"| |: { |
|||"ids"| |: { |
|||"properties"| |: { |
|||"hashMap"| |: { |
|||"properties"| |: { |
|||"N_10290607"| |: { |
|||"type"| |: ||"double"|
|||}, |
|||"A_1038408"| |: { |
|||"type"| |: ||"double"|
|||}, |
|||"A_11585994"| |: { |
|||"type"| |: ||"double"|
|||}, |
|||"B_1245677"| |: { |
|||"type"| |: ||"double"|
|||}, |
|||"B_1269810"| |: { |
|||"type"| |: ||"double"|
|||}, |
|||"C_15680034"| |: { |
|||"type"| |: ||"double"|
|||}, |
|||"N_1654171"| |: { |
|||"type"| |: ||"double"|
|||},
...

I use Gson to convert Java classes to Json and then directly put them
into ES. One of the classes I use has a HashMap<String, Double> as a
central piece, where it stores its key-value pairs. It's really just
that: the keys are stings, the values doubles. ES however creates a
mapping for every key of the hashmap as you can see above.

Does someone here know what mapping I need to define to avoid that?

Also: Can I change this mapping on the already existing index, or do I
have to create a new index, then create a mapping, then copy over the
data from the old index?

Many Thanks!
|

--
You received this message because you are subscribed to the Google
Groups "elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to elasticsearc...@googlegroups.com.
To view this discussion on the web visit
https://groups.google.com/d/msgid/elasticsearch/4cfa6af7-
4329-4edc-b4dc-385a4a38714d%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

--
You received this message because you are subscribed to the Google
Groups "elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to elasticsearc...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/
msgid/elasticsearch/52D3BCAD.5060208%40swe-blog.net.

For more options, visit https://groups.google.com/groups/opt_out.

--
You received this message because you are subscribed to the Google Groups "elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elasticsearch+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/9fd97086-4547-4c5e-9572-67e02f616582%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


(Tomislav Poljak) #6

Hi,
I think first you need to define is what is the requirement (or
expectation) of hashMap (sub)object in index -> do you need to search
on key/value pairs?

Like for example, query = 'hashMap.N_10290607:XY' ?

If not, if you only need to store json serialization of haspmap as
part of bigger object inside index (_source) to retrieve it later, you
can define not to expand mapping dynamically ("dynamic" : false) in
the 'hashMap' (sub)object - part of mapping for, like bellow:

...
"properties" : {
"hashMap" : {
"dynamic" : false,
"properties" : {
..

This is done by a custom mapping. If you do not define a custom
mapping elasticsearch will, by default, create and expand mapping for
hashMap for all keys which will sooner or later create issues in
index. For more details check
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-object-type.html#_dynamic

If you don't know how to create mapping in the first place you can get
existing mapping
(http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/indices-get-mapping.html),
remove fields added/recognised by elasticsearch automatically, define
"dynamic" : false for the 'hashMap' object and use new mapping when
reindexing data.

Hope this helps,

Tomislav

2014-03-12 19:37 GMT+01:00 bhagatsangita@gmail.com:

Hey Peter,

Did you find a resolution for Hashmap mappings? Looking for the same thing.

Thanks,
Sangita.

On Tuesday, January 14, 2014 9:03:35 AM UTC-5, Peter Webber wrote:

Hi Alex,

thanks for your reply first of all. The problem is that I will have
millions of keys, and that ES creates a mapping for each. That will bloat
the mappings data structure and probably lead to some memory and/or
performance issues somewhere (I don't know enough about ES internals, to
know precisely where, but it cannot be good to have a few million entries in
the mapping where one would do.)

Hope that helps!
Peter

Am Dienstag, 14. Januar 2014 13:01:22 UTC+1 schrieb Alexander Reelsen:

Hey Peter,

can you tell me, where your problem with the above approach actually is?
You feed a number of key/value pairs into elasticsearch, each key and each
value is evaluated by its type and then put into the mapping, as each key
becomes an own field in elasticsearch, which can be searched for. Wondering
why this is a problem for you? Or why do you want to avoid that?

Also, where and how do you want to change the mapping to?

I am a bit confused what and why you are expecting to be different than
it actually is. Maybe you should not think in java data structures but
rather in JSON, which is being indexed and needs to create a mapping in
order to be able to search for it. Happy to help, if I understand what you
are trying to do. Please elaborate.

--Alex

On Mon, Jan 13, 2014 at 11:15 AM, Oliver B. Fischer
mail...@swe-blog.net wrote:

Hi Peter,

ES allows you to defined dynamic mappings there you can determine the
mapping of a property based on the evaluation of some conditions.

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-dynamic-mapping.html

Oliver

Am 12.01.14 17:16, schrieb Peter Webber:

I had a look at the mapping ES created automatically for one of my
indices, and found something that's not quite right:

....
||| "annotations"| |: { |
|||"properties"| |: { |
|||"ids"| |: { |
|||"properties"| |: { |
|||"hashMap"| |: { |
|||"properties"| |: { |
|||"N_10290607"| |: { |
|||"type"| |: ||"double"|
|||}, |
|||"A_1038408"| |: { |
|||"type"| |: ||"double"|
|||}, |
|||"A_11585994"| |: { |
|||"type"| |: ||"double"|
|||}, |
|||"B_1245677"| |: { |
|||"type"| |: ||"double"|
|||}, |
|||"B_1269810"| |: { |
|||"type"| |: ||"double"|
|||}, |
|||"C_15680034"| |: { |
|||"type"| |: ||"double"|
|||}, |
|||"N_1654171"| |: { |
|||"type"| |: ||"double"|
|||},
...

I use Gson to convert Java classes to Json and then directly put them
into ES. One of the classes I use has a HashMap<String, Double> as a
central piece, where it stores its key-value pairs. It's really just
that: the keys are stings, the values doubles. ES however creates a
mapping for every key of the hashmap as you can see above.

Does someone here know what mapping I need to define to avoid that?

Also: Can I change this mapping on the already existing index, or do I
have to create a new index, then create a mapping, then copy over the
data from the old index?

Many Thanks!
|

--
You received this message because you are subscribed to the Google
Groups "elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to elasticsearc...@googlegroups.com.
To view this discussion on the web visit

https://groups.google.com/d/msgid/elasticsearch/4cfa6af7-4329-4edc-b4dc-385a4a38714d%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

--
You received this message because you are subscribed to the Google
Groups "elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to elasticsearc...@googlegroups.com.
To view this discussion on the web visit
https://groups.google.com/d/msgid/elasticsearch/52D3BCAD.5060208%40swe-blog.net.

For more options, visit https://groups.google.com/groups/opt_out.

--
You received this message because you are subscribed to the Google Groups
"elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an
email to elasticsearch+unsubscribe@googlegroups.com.
To view this discussion on the web visit
https://groups.google.com/d/msgid/elasticsearch/9fd97086-4547-4c5e-9572-67e02f616582%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elasticsearch+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/CALuCJxid9RQTN3ESAzA1%2B6%2BnPY6J0ny%3DGVOFzw6un9vaXcek%3Dg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.


(rpras82) #7

Hi,

How would I define a custom mapping if I wanted to index/store only the
keys in the map and discard the values?

Prasanna

On Monday, March 17, 2014 2:28:39 AM UTC-7, Tomislav Poljak wrote:

Hi,
I think first you need to define is what is the requirement (or
expectation) of hashMap (sub)object in index -> do you need to search
on key/value pairs?

Like for example, query = 'hashMap.N_10290607:XY' ?

If not, if you only need to store json serialization of haspmap as
part of bigger object inside index (_source) to retrieve it later, you
can define not to expand mapping dynamically ("dynamic" : false) in
the 'hashMap' (sub)object - part of mapping for, like bellow:

...
"properties" : {
"hashMap" : {
"dynamic" : false,
"properties" : {
..

This is done by a custom mapping. If you do not define a custom
mapping elasticsearch will, by default, create and expand mapping for
hashMap for all keys which will sooner or later create issues in
index. For more details check

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-object-type.html#_dynamic

If you don't know how to create mapping in the first place you can get
existing mapping
(
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/indices-get-mapping.html),

remove fields added/recognised by elasticsearch automatically, define
"dynamic" : false for the 'hashMap' object and use new mapping when
reindexing data.

Hope this helps,

Tomislav

2014-03-12 19:37 GMT+01:00 <bhagat...@gmail.com <javascript:>>:

Hey Peter,

Did you find a resolution for Hashmap mappings? Looking for the same
thing.

Thanks,
Sangita.

On Tuesday, January 14, 2014 9:03:35 AM UTC-5, Peter Webber wrote:

Hi Alex,

thanks for your reply first of all. The problem is that I will have
millions of keys, and that ES creates a mapping for each. That will
bloat

the mappings data structure and probably lead to some memory and/or
performance issues somewhere (I don't know enough about ES internals,
to

know precisely where, but it cannot be good to have a few million
entries in

the mapping where one would do.)

Hope that helps!
Peter

Am Dienstag, 14. Januar 2014 13:01:22 UTC+1 schrieb Alexander Reelsen:

Hey Peter,

can you tell me, where your problem with the above approach actually
is?

You feed a number of key/value pairs into elasticsearch, each key and
each

value is evaluated by its type and then put into the mapping, as each
key

becomes an own field in elasticsearch, which can be searched for.
Wondering

why this is a problem for you? Or why do you want to avoid that?

Also, where and how do you want to change the mapping to?

I am a bit confused what and why you are expecting to be different
than

it actually is. Maybe you should not think in java data structures but
rather in JSON, which is being indexed and needs to create a mapping
in

order to be able to search for it. Happy to help, if I understand what
you

are trying to do. Please elaborate.

--Alex

On Mon, Jan 13, 2014 at 11:15 AM, Oliver B. Fischer
mail...@swe-blog.net wrote:

Hi Peter,

ES allows you to defined dynamic mappings there you can determine the
mapping of a property based on the evaluation of some conditions.

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-dynamic-mapping.html

Oliver

Am 12.01.14 17:16, schrieb Peter Webber:

I had a look at the mapping ES created automatically for one of my
indices, and found something that's not quite right:

....
||| "annotations"| |: { |
|||"properties"| |: { |
|||"ids"| |: { |
|||"properties"| |: { |
|||"hashMap"| |: { |
|||"properties"| |: { |
|||"N_10290607"| |: { |
|||"type"| |: ||"double"|
|||}, |
|||"A_1038408"| |: { |
|||"type"| |: ||"double"|
|||}, |
|||"A_11585994"| |: { |
|||"type"| |: ||"double"|
|||}, |
|||"B_1245677"| |: { |
|||"type"| |: ||"double"|
|||}, |
|||"B_1269810"| |: { |
|||"type"| |: ||"double"|
|||}, |
|||"C_15680034"| |: { |
|||"type"| |: ||"double"|
|||}, |
|||"N_1654171"| |: { |
|||"type"| |: ||"double"|
|||},
...

I use Gson to convert Java classes to Json and then directly put
them

into ES. One of the classes I use has a HashMap<String, Double> as a
central piece, where it stores its key-value pairs. It's really just
that: the keys are stings, the values doubles. ES however creates a
mapping for every key of the hashmap as you can see above.

Does someone here know what mapping I need to define to avoid that?

Also: Can I change this mapping on the already existing index, or do
I

have to create a new index, then create a mapping, then copy over
the

data from the old index?

Many Thanks!
|

--
You received this message because you are subscribed to the Google
Groups "elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it,
send

an email to elasticsearc...@googlegroups.com.
To view this discussion on the web visit

https://groups.google.com/d/msgid/elasticsearch/4cfa6af7-4329-4edc-b4dc-385a4a38714d%40googlegroups.com.

For more options, visit https://groups.google.com/groups/opt_out.

--
You received this message because you are subscribed to the Google
Groups "elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it,
send

an email to elasticsearc...@googlegroups.com.
To view this discussion on the web visit

https://groups.google.com/d/msgid/elasticsearch/52D3BCAD.5060208%40swe-blog.net.

For more options, visit https://groups.google.com/groups/opt_out.

--
You received this message because you are subscribed to the Google
Groups
"elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send
an
email to elasticsearc...@googlegroups.com <javascript:>.
To view this discussion on the web visit

https://groups.google.com/d/msgid/elasticsearch/9fd97086-4547-4c5e-9572-67e02f616582%40googlegroups.com.

For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elasticsearch+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/b62e41ed-0ec9-4559-a4f2-0c923306c95d%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


(system) #8