From 52691766c5887942feed6eed39d12e63c8f1bf61 Mon Sep 17 00:00:00 2001 From: Karl Hobley Date: Fri, 15 Dec 2017 11:51:23 +0000 Subject: [PATCH] Reorganise get_inner_query # Conflicts: # wagtail/search/backends/elasticsearch2.py --- wagtail/search/backends/elasticsearch2.py | 61 ++++++++++++----------- 1 file changed, 31 insertions(+), 30 deletions(-) diff --git a/wagtail/search/backends/elasticsearch2.py b/wagtail/search/backends/elasticsearch2.py index b54f3ff75..c3db8e04b 100644 --- a/wagtail/search/backends/elasticsearch2.py +++ b/wagtail/search/backends/elasticsearch2.py @@ -375,41 +375,42 @@ class Elasticsearch2SearchQueryCompiler(BaseSearchQueryCompiler): def get_inner_query(self): if isinstance(self.query, MatchAll): return {'match_all': {}} + elif isinstance(self.query, PlainText): + fields = self.remapped_fields or ['_all', '_partials'] + operator = self.query.operator - if not isinstance(self.query, PlainText): + if len(fields) == 1: + if operator == 'or': + return { + 'match': { + fields[0]: self.query.query_string, + } + } + return { + 'match': { + fields[0]: { + 'query': self.query.query_string, + 'operator': operator, + } + } + } + + query = { + 'multi_match': { + 'query': self.query.query_string, + 'fields': fields, + } + } + if operator != 'or': + query['multi_match']['operator'] = operator + + return query + + else: raise NotImplementedError( '`%s` is not supported by the Elasticsearch search backend.' % self.query.__class__.__name__) - fields = self.remapped_fields or ['_all', '_partials'] - operator = self.query.operator - - if len(fields) == 1: - if operator == 'or': - return { - 'match': { - fields[0]: self.query.query_string, - } - } - return { - 'match': { - fields[0]: { - 'query': self.query.query_string, - 'operator': operator, - } - } - } - - query = { - 'multi_match': { - 'query': self.query.query_string, - 'fields': fields, - } - } - if operator != 'or': - query['multi_match']['operator'] = operator - return query - def get_content_type_filter(self): # Query content_type using a "match" query. See comment in # Elasticsearch2Mapping.get_document for more details