2013-08-13 4 views
1

У меня есть следующий эластичный поисковый запрос с строкой запроса, которая должна соответствовать всем полям, а термин query должен соответствовать соответствующим полям, указанным ниже. Я хочу, чтобы только часть query_string была частью выделения. Когда я использую required_field_match, он выделяет только термин «электронная почта» в поле канала. без required_field_match он соответствует «email» и query_string для всех полей, которые я не хочу. Можете ли вы дать мне знать, как исключить из поля «канал»?Elasticsearch исключает bool «term» от подсчета

{ 
    "query":{ 
     "bool":{ 
     "must":[ 
      { 
       "term":{ 
        "channel":"email" 
       } 
      }, 
      { 
       "query_string":{ 
        "query":"\"payment type\"", 
        "default_operator":"AND" 
       } 
      } 
     ] 
     } 
    }, 
    "highlight":{ 
     "pre_tags":[ 
     "<span class='highlight'>" 
     ], 
     "post_tags":[ 
     "</span>" 
     ], 
     "require_field_match":false, 
     "fields":{ 
     "requestSummary":{ 
      "number_of_fragments":0 
     }, 
     "emails.emailBody":{ 
      "number_of_fragments":0 
     }, 
     "chatTextArray.text":{ 
      "number_of_fragments":0 
     }, 
     "chatTextArray.name":{ 
      "number_of_fragments":0 
     } 
     } 
    }, 
    "facets":{ 
     "channel":{ 
     "terms":{ 
      "field":"channel" 
     } 
     }, 
     "siteId":{ 
     "terms":{ 
      "field":"siteId" 
     } 
     }, 
     "closeDt":{ 
     "terms":{ 
      "field":"closeDt" 
     } 
     }, 
     "srId":{ 
     "terms":{ 
      "field":"srId" 
     } 
     } 
    } 
} 

Результаты поиска:

{ 
     "highlight":{ 
      "emails.emailBody":[ 
      "helps keep your information safe, visit: http://pages.half.ebay.com/help/policy/privacy.html#toc-02 
In this <span class='highlight'>email</span>" 
      ], 
      "requestSummary":[ 
      "Change <span class='highlight'>payment</span> <span class='highlight'>type</span>" 
      ] 
     } 
    } 

ответ