Okay, I got it this question that what is the need for mapping.
Now I am going through a piece of code, what they are doing is that they are generating the mapping while creating the elastic search repository by pushing a dummy object and then deleting it.
I got it that elastic search can generate mappings, but what is the point of doing so. It does not help with the search queries ( at least the regex one that I have tried unless you explicitly tell in your mapping that this is of type keyword).
I would be thankful if someone can explain this.
CodePudding user response:
Although Elasticsearch generates the mapping when you don't define one, and just index the document, but that way Elasticsearch generates the mapping based on the first document data, for example you have product-id
field in your index, and if you index it without defining explicit mapping, Elasticsearch generates two data-type, one is text
and another is keyword
for this field when you index product-id
as below.
{
"product-id" : "1"
}
Now, it depends on your use-case, let's suppose in your case, product-id
is keyword and fixed, and you just want to use the exact search
or aggregation
on the product-id
field, and don't want the full-text search
, than you better go with explicit mapping and define it as in keyword
field, that way Elasticsearch storage and queries would be optimal. You can refer to this Stackoverflow comment, for more information on it.
Bottomline, When you want to have a greater control on how your data should be indexed, It's always better to define explicit mapping than relaying on default mapping generated by Elasticsearch.