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.