问题
I already ready this article https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-multi-match-query.html
but couldn't figure it out myself.
lets have these two queries:
first
GET blablabla/_search
{
"query": {
"multi_match": {
"query": "games usa",
"fields": ["title1", "title2"],
"type": "best_fields"
}
}
}
second
get blablabla/_search
{
"query" : {
"multi_match": {
"query": "games usa",
"fields": ["title1", "title2"],
"type": "most_fields"
}
}
}
I think the first query means:
get documetns that contain (games) or (usa) or (games and usa) words in either the title1 or the title2 fields.
However, I don't know what does the second one mean.
may i ask for help please?
(im on elasticsearch 2.2)
回答1:
Whenever search operation is performed in Elastic Search, relevance of each matched document is calculated.According to th documentation-
The relevance score of each document is represented by a positive floating-point number called the
_score. The higher the _score, the more relevant the document.
As per your examples mentioned above
GET blablabla/_search
{
"query": {
"multi_match": {
"query": "games usa",
"fields": ["title1", "title2"],
"type": "best_fields"
}
}
}
This query will find the documents which contain games AND/OR usa in title1 or title2 but _score will be calculated from single best matching field. For example-
- if
title1containsgamesandtitle2containsgames usain the same document, then_scorewill be the one fromtitle2. best_fieldsis most useful when you are searching for multiple words best found in the same field.
In most_fields:
GET blablabla/_search
{
"query" : {
"multi_match": {
"query": "games usa",
"fields": ["title1", "title2"],
"type": "most_fields"
}
}
}
This query will find the documents which contain games AND/OR usa in title1 or title2 but _score will be calculated from the combination of all the fields. For example-
- if
title1containsgamesandtitle2containsgames usain the same document, then_scorewill be combination of scores fromtitle1andtitle2
Hope this helps
回答2:
A little remark for most_fields - it uses score from both fields. and divide it on fields count
In your example: ( Score from title1 + score from title2 ) / 2
来源:https://stackoverflow.com/questions/35393793/elasticsearch-what-is-the-difference-between-best-field-and-most-field