我在 /search/ search() 处收到 TypeError,有一个意外的关键字参数“字段”,我使用 saleor 进行电子商务,使用弹性搜索进行搜索。
这是堆栈跟踪:
Traceback:
File "/home/zack/.environments/sports/local/lib/python2.7/site-packages/django/core/handlers/exception.py" in inner
42. response = get_response(request)
File "/home/zack/.environments/sports/local/lib/python2.7/site-packages/django/core/handlers/base.py" in _legacy_get_response
249. response = self._get_response(request)
File "/home/zack/.environments/sports/local/lib/python2.7/site-packages/django/core/handlers/base.py" in _get_response
187. response = self.process_exception_by_middleware(e, request)
File "/home/zack/.environments/sports/local/lib/python2.7/site-packages/django/core/handlers/base.py" in _get_response
185. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/zack/sportsnstuff/sportsnstuff/saleor/search/views.py" in search
26. print(results)
File "/home/zack/sportsnstuff/sportsnstuff/saleor/search/backends/base.py" in __repr__
187. data = list(self[:21])
File "/home/zack/sportsnstuff/sportsnstuff/saleor/search/backends/base.py" in __iter__
181. return iter(self.results())
File "/home/zack/sportsnstuff/sportsnstuff/saleor/search/backends/base.py" in results
147. self._results_cache = self._do_search()
File "/home/zack/sportsnstuff/sportsnstuff/saleor/search/backends/elasticsearch.py" in _do_search
447. hits = self.backend.es.search(**params)
File "/home/zack/.environments/sports/local/lib/python2.7/site-packages/elasticsearch/client/utils.py" in _wrapped
73. return func(*args, params=params, **kwargs)
Exception Type: TypeError at /search/
Exception Value: search() got an unexpected keyword argument 'fields'
编辑:问题出在弹性搜索版本但是现在我收到此错误:字符串索引必须是整数这是堆栈跟踪:
Traceback (most recent call last):
File "/home/zack/.environments/sports/local/lib/python2.7/site-packages/django/core/handlers/exception.py", line 42, in inner
response = get_response(request)
File "/home/zack/.environments/sports/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 249, in _legacy_get_response
response = self._get_response(request)
File "/home/zack/.environments/sports/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 187, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/home/zack/.environments/sports/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 185, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/zack/sportsnstuff/sportsnstuff/saleor/search/views.py", line 26, in search
print(results)
File "/home/zack/sportsnstuff/sportsnstuff/saleor/search/backends/base.py", line 187, in __repr__
data = list(self[:21])
File "/home/zack/sportsnstuff/sportsnstuff/saleor/search/backends/base.py", line 181, in __iter__
return iter(self.results())
File "/home/zack/sportsnstuff/sportsnstuff/saleor/search/backends/base.py", line 147, in results
self._results_cache = self._do_search()
File "/home/zack/sportsnstuff/sportsnstuff/saleor/search/backends/elasticsearch.py", line 447, in _do_search
hits = self.backend.es.search(**params)
File "/home/zack/.environments/sports/local/lib/python2.7/site-packages/elasticsearch/client/utils.py", line 69, in _wrapped
return func(*args, params=params, **kwargs)
File "/home/zack/.environments/sports/local/lib/python2.7/site-packages/elasticsearch/client/__init__.py", line 539, in search
doc_type, '_search'), params=params, body=body)
File "/home/zack/.environments/sports/local/lib/python2.7/site-packages/elasticsearch/transport.py", line 327, in perform_request
status, headers, data = connection.perform_request(method, url, params, body, ignore=ignore, timeout=timeout)
File "/home/zack/.environments/sports/local/lib/python2.7/site-packages/elasticsearch/connection/http_urllib3.py", line 110, in perform_request
self._raise_error(response.status, raw_data)
File "/home/zack/.environments/sports/local/lib/python2.7/site-packages/elasticsearch/connection/base.py", line 114, in _raise_error
raise HTTP_EXCEPTIONS.get(status_code, TransportError)(status_code, error_message, additional_info)
NotFoundError: <unprintable NotFoundError object>
Traceback (most recent call last):
File "/usr/lib/python2.7/wsgiref/handlers.py", line 85, in run
self.result = application(self.environ, self.start_response)
File "/home/zack/.environments/sports/local/lib/python2.7/site-packages/django/contrib/staticfiles/handlers.py", line 63, in __call__
return self.application(environ, start_response)
File "/home/zack/sportsnstuff/sportsnstuff/saleor/wsgi/health_check.py", line 7, in health_check_wrapper
return application(environ, start_response)
File "/home/zack/.environments/sports/local/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 170, in __call__
response = self.get_response(request)
File "/home/zack/.environments/sports/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 124, in get_response
response = self._middleware_chain(request)
File "/home/zack/.environments/sports/local/lib/python2.7/site-packages/django/core/handlers/exception.py", line 44, in inner
response = response_for_exception(request, exc)
File "/home/zack/.environments/sports/local/lib/python2.7/site-packages/django/core/handlers/exception.py", line 94, in response_for_exception
response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info())
File "/home/zack/.environments/sports/local/lib/python2.7/site-packages/django/core/handlers/exception.py", line 136, in handle_uncaught_exception
return debug.technical_500_response(request, *exc_info)
File "/home/zack/.environments/sports/local/lib/python2.7/site-packages/django/views/debug.py", line 84, in technical_500_response
html = reporter.get_traceback_html()
File "/home/zack/.environments/sports/local/lib/python2.7/site-packages/django/views/debug.py", line 328, in get_traceback_html
c = Context(self.get_traceback_data(), use_l10n=False)
File "/home/zack/.environments/sports/local/lib/python2.7/site-packages/django/views/debug.py", line 266, in get_traceback_data
v = pprint(v)
File "/home/zack/.environments/sports/local/lib/python2.7/site-packages/django/template/defaultfilters.py", line 968, in pprint
return "Error in formatting: %s: %s" % (e.__class__.__name__, force_text(e, errors="replace"))
File "/home/zack/.environments/sports/local/lib/python2.7/site-packages/django/utils/encoding.py", line 78, in force_text
s = six.text_type(s)
File "/home/zack/.environments/sports/local/lib/python2.7/site-packages/elasticsearch/exceptions.py", line 55, in __str__
cause = ', %r' % self.info['error']['root_cause'][0]['reason']
TypeError: string indices must be integers
def results(self):
if self._results_cache is None:
self._results_cache = self._do_search()
return self._results_cache
我正在为 python 使用 ES 版本 1.7 和 elasticsearch 2.4.1。这是堆栈跟踪中的代码
def __repr__(self):
data = list(self[:21])
if len(data) > 20:
data[-1] = "...(remaining elements truncated)..."
return '<SearchResults %r>' % data