ps0604
ps0604

Reputation: 1071

Get from ElasticSearch why a result is a hit

In the ElasticSearch below I search for the word Balances in two fields name and notes:

GET /_search

{ "query": {
    "multi_match": { "query": "Balances",
                     "fields": ["name","notes"] 
                   }
           }
 }

And the result in the name field:

   "hits" : {
     "total" : {
       "value" : 1,
       "relation" : "eq"
     },
     "max_score" : 1.673515,
     "hits" : [
       {
         "_index" : "idx",
         "_type" : "_doc",
         "_id" : "25",
         "_score" : 1.673515,
         "_source" : {
           "name" : "Deposits checking accounts balances",
           "notes" : "These are the notes",
           "@timestamp" : "2019-04-18T21:05:00.387Z",
           "id" : 25,
           "@version" : "1"
         }
       } 
      ]
    }

Now, I want to know in which field ElasticSearch found the value. I could evaluate the result and see if the searched text is in name or notes, but I cannot do that if it's a fuzzy search.

Can ElasticSearch tell me in which field the text was found, and in addition provide a snippet with 5 words to the left and to the right of the result to tell the user why the result is a hit?

What I want to achieve is similar to Google highlighting in bold the text that was found within a phrase.

Upvotes: 0

Views: 51

Answers (1)

xeraa
xeraa

Reputation: 10859

I think the 2 solutions in Find out which fields matched in a multi match query are still the valid solutions:

  • Highlight to find it.
  • Split the query up into multiple named match queries.

Upvotes: 1

Related Questions