Book Image

ElasticSearch Blueprints

Book Image

ElasticSearch Blueprints

Overview of this book

Table of Contents (15 chapters)
Elasticsearch Blueprints
About the Author
About the Reviewer

The product-with-tags search problem

A new requirement came into existence to search for products that have a specific attribute value set.

As in, the user should be able to search for a particular product based on any of its attributes. However, these attributes are not fixed and might change on a daily basis. Hence, it's not possible to keep this as a key-value pair. More keys mean more fields and each field costs Lucene a reverse index under the hood. So, a better approach would be to model the data as follows:


  "name" : "LCD TV",
  "tags" : [
      "tagName" : "company" ,
      "value" : "Sony"
      "tagName" : "competitor" ,
      "value" : "Toshiba"

With this approach, everything looks good, but then, the following query works true for the preceding document:

tags.tagName:company AND tags.value:Toshiba

This is not what we expected. The product actually belongs to the company Sony, but then, it matched against the company Toshiba...