I have the following query, but highlight is not working.
{
"query": {
"filtered" : {
"filter" : {
"or" : {
"filters" : [
{
"query": {
"multi_match":{
"query":"time",
"fields":[
"display_name_en","display_name_pa","display_name_pr",
"icon_class","in_sidemenu","model_name","name",
"table_name"
],
"operator":"OR"
}
}
},
{
"terms":{
"created_by.id":["11","13","14","16"],
"_name" : "created_by"
}
},
{
"range":{
"created_at":{
"gte":"2016-01-27",
"lte":"2016-03-21",
"format":"YYYY-MM-dd"
}
}
}
],
"_name" : "or"
}
}
}
},
"highlight": {
"fields" : {
"name" : {}
}
}
}
And the result is like this:
{
"took": 3,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 1,
"hits": [
{
"_index": "promote_kmp",
"_type": "resources",
"_id": "569e0d84684cc",
"_score": 1,
"_source": {
"id": 106,
"name": "Last time First Update",
"display_name_en": "Last time",
"display_name_pr": "Last time",
"display_name_pa": "Last time",
"table_name": "Last time",
"model_name": "Last time",
"in_sidemenu": "0",
"icon_class": "Last time",
"created_at": "2016-01-18 09:40:51",
"created_by": null,
"updated_at": "2016-01-19 14:48:44",
"updated_by": {
"id": 6,
"first_name": "Laili",
"last_name": "Hamta",
"last_activity": "2016-01-19 14:48:44",
"roles": [
{
"id": 1,
"name": "admin",
"created_at": "2015-09-06 15:19:15",
"updated_at": "2015-09-06 15:19:15",
"pivot": {
"user_id": 6,
"role_id": 1
}
}
]
}
},
"matched_queries": [
"or"
]
}
]
}
}
As you see there is no any highlight keyword inside result, So what is the mistake with this query, and why highlight is not working? But if I put the multi_match
part before filter:{}
it is working, and on that case how I can use with or
operator? for any help thanks.
The problem with query is that you are only filtering
the results, highlight
works on queries
only. You can also notice that every document has score
of 1 because of applying only filters
. You need to rewrite your query as something like this
{
"query": {
"bool": {
"should": [
{
"multi_match": {
"query": "time",
"fields": [
"display_name_en",
"display_name_pa",
"display_name_pr",
"icon_class",
"in_sidemenu",
"model_name",
"name",
"table_name"
]
}
},
{
"terms": {
"created_by.id": [
"11",
"13",
"14",
"16"
],
"_name": "created_by"
}
},
{
"range": {
"created_at": {
"gte": "2016-01-27",
"lte": "2016-03-21",
"format": "YYYY-MM-dd"
}
}
}
]
}
},
"highlight": {
"fields": {}
}
}
convert or filters
to bool should clause
and highlighting will work now.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.