If
you want to apply same search query on multiple fields, then you can use
multi_match query. By default, this query runs as type best_fields, which means
that it generates a match query for each field and wraps them in a dis_max
query.
Prevoius
Next
Home
GET /books/philosophy/_search { "query":{ "dis_max" :{ "queries": [ {"match" : {"title" : "Osho Autobiography"}}, {"match" : {"description" : "Osho Autobiography"}} ] } } }
We can
rewrite above query using multi_match like below.
GET /books/philosophy/_search { "query":{ "multi_match": { "query": "Osho autobiography", "fields": ["title", "description"] } } }
Types of multi match query
You can
specify how this multi_match query to execute. There are five different values
associated with the field “type” for “multi_match” query.
1.best_fields
Finds
documents, which match any field, but uses the _score from the best field. This
is the default type for multi match query.
GET /books/philosophy/_search { "query":{ "multi_match": { "query": "Osho autobiography", "fields": ["title", "description"], "type": "best_fields" } } }
Response
like below.
{ "took": 1, "timed_out": false, "_shards": { "total": 5, "successful": 5, "failed": 0 }, "hits": { "total": 2, "max_score": 0.06658022, "hits": [ { "_index": "books", "_type": "philosophy", "_id": "1", "_score": 0.06658022, "_source": { "title": "Autobiography of Osho", "description": "A professor of philosophy, he travelled throughout India during the 1960s as a public speaker. His outspoken criticism of politicians and the political mind, Mahatma Gandhi and institutionalised religion made him controversial." } }, { "_index": "books", "_type": "philosophy", "_id": "2", "_score": 0.03842633, "_source": { "title": "Osho philosophy", "description": "Osho Autobiography is a book on philosophy. Osho travelled throughout India during the 1960s as a public speaker. Osho outspoken criticism of politicians and the political mind, Mahatma Gandhi and institutionalised religion made him controversial.Osho written many books on philosophy." } } ] } }
2. most_fields
Finds
documents, which match any field and combines the _score from each field.
GET /books/philosophy/_search { "query":{ "multi_match": { "query": "Osho autobiography", "fields": ["title", "description"], "type": "most_fields" } } }
Response
like below.
{ "took": 2, "timed_out": false, "_shards": { "total": 5, "successful": 5, "failed": 0 }, "hits": { "total": 2, "max_score": 0.061475925, "hits": [ { "_index": "books", "_type": "philosophy", "_id": "2", "_score": 0.061475925, "_source": { "title": "Osho philosophy", "description": "Osho Autobiography is a book on philosophy. Osho travelled throughout India during the 1960s as a public speaker. Osho outspoken criticism of politicians and the political mind, Mahatma Gandhi and institutionalised religion made him controversial.Osho written many books on philosophy." } }, { "_index": "books", "_type": "philosophy", "_id": "1", "_score": 0.03182549, "_source": { "title": "Autobiography of Osho", "description": "A professor of philosophy, he travelled throughout India during the 1960s as a public speaker. His outspoken criticism of politicians and the political mind, Mahatma Gandhi and institutionalised religion made him controversial." } } ] } }
3. cross_fields
Treats
fields with the same analyzer as though they were one big field. Looks for each
word in any field.
4. phrase
Runs a
match_phrase query on each field and combines the _score from each field.
5. phrase_prefix
Runs a
match_phrase_prefix query on each field and combines the _score from each field.
References
No comments:
Post a Comment