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+unsubscr...@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.

Reply via email to