elasticsearch,Python,elasticsearch" /> elasticsearch,Python,elasticsearch" />

Python 弹性搜索-无法分析查询

Python 弹性搜索-无法分析查询,python,elasticsearch,Python,elasticsearch,我使用的是python elasticsearch客户端,当我尝试使用update_by_查询方法更新文档时,elasticsearch无法解析查询 我的更新正文如下: { 'script': { 'inline': 'ctx._source.viewers += info', 'params': { 'info': { 'time': datetime.datetime(2017, 3, 7, 18, 8, 50), 'viewe

我使用的是python elasticsearch客户端,当我尝试使用update_by_查询方法更新文档时,elasticsearch无法解析查询

我的更新正文如下:

{
  'script': {
    'inline': 'ctx._source.viewers += info',
    'params': {
      'info': {
        'time': datetime.datetime(2017, 3, 7, 18, 8, 50),
        'viewer': 'abc@xyz.com'
      }
    }
  }
}
TransportError(400, 'search_phase_execution_exception', 'Failed to parse query [delivery_reference_id:CAM_10_DATA_4_2017-03-07 18:02:07]')
Traceback (most recent call last):
  File "C:\Users\catch\AppData\Roaming\Python\Python34\site-packages\django\core\handlers\exception.py", line 42, in inner
    response = get_response(request)
  File "C:\Users\catch\AppData\Roaming\Python\Python34\site-packages\django\core\handlers\base.py", line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "C:\Users\catch\AppData\Roaming\Python\Python34\site-packages\django\core\handlers\base.py", line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\Users\catch\AppData\Roaming\Python\Python34\site-packages\django\views\decorators\csrf.py", line 58, in wrapped_view
    return view_func(*args, **kwargs)
  File "C:\Users\catch\AppData\Roaming\Python\Python34\site-packages\django\views\generic\base.py", line 68, in view
    return self.dispatch(request, *args, **kwargs)
  File "C:\Python34\lib\site-packages\rest_framework\views.py", line 483, in dispatch
    response = self.handle_exception(exc)
  File "C:\Python34\lib\site-packages\rest_framework\views.py", line 443, in handle_exception
    self.raise_uncaught_exception(exc)
  File "C:\Python34\lib\site-packages\rest_framework\views.py", line 480, in dispatch
    response = handler(request, *args, **kwargs)
  File "C:\Users\catch\PycharmProjects\myproject\myproj\apis\views.py", line 516, in get
    viewer=viewer_email)
  File "C:\Users\catch\PycharmProjects\myproject\myproj\apis\views.py", line 541, in update_track_info
    doc=doc)
  File "C:\Users\catch\PycharmProjects\myproject\myproj\apis\views.py", line 553, in es_update
    body=doc)
  File "C:\Python34\lib\site-packages\elasticsearch\client\utils.py", line 73, in _wrapped
    return func(*args, params=params, **kwargs)
  File "C:\Python34\lib\site-packages\elasticsearch\client\__init__.py", line 680, in update_by_query
    doc_type, '_update_by_query'), params=params, body=body)
  File "C:\Python34\lib\site-packages\elasticsearch\transport.py", line 318, in perform_request
    status, headers, data = connection.perform_request(method, url, params, body, ignore=ignore, timeout=timeout)
  File "C:\Python34\lib\site-packages\elasticsearch\connection\http_urllib3.py", line 128, in perform_request
    self._raise_error(response.status, raw_data)
  File "C:\Python34\lib\site-packages\elasticsearch\connection\base.py", line 122, in _raise_error
    raise HTTP_EXCEPTIONS.get(status_code, TransportError)(status_code, error_message, additional_info)
elasticsearch.exceptions.RequestError: TransportError(400, 'search_phase_execution_exception', 'Failed to parse query [delivery_reference_id:CAM_10_DATA_4_2017-03-07 18:02:07]')
弹性搜索的调用方式如下所示:

update = es.update_by_query(index=index_el,
                            doc_type='1',
                            q='delivery_reference_id:' + str(cam_id) +'',
                            body=doc)
cam_id的示例值为:

在内部,形成以下查询::

http://127.0.0.1:9200/user_tracker/1/_update_by_query?q=delivery_reference_id%3ACAM_10_DATA_4_2017-03-07+18%3A02%3A07

收到的错误如下:

{
  'script': {
    'inline': 'ctx._source.viewers += info',
    'params': {
      'info': {
        'time': datetime.datetime(2017, 3, 7, 18, 8, 50),
        'viewer': 'abc@xyz.com'
      }
    }
  }
}
TransportError(400, 'search_phase_execution_exception', 'Failed to parse query [delivery_reference_id:CAM_10_DATA_4_2017-03-07 18:02:07]')
Traceback (most recent call last):
  File "C:\Users\catch\AppData\Roaming\Python\Python34\site-packages\django\core\handlers\exception.py", line 42, in inner
    response = get_response(request)
  File "C:\Users\catch\AppData\Roaming\Python\Python34\site-packages\django\core\handlers\base.py", line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "C:\Users\catch\AppData\Roaming\Python\Python34\site-packages\django\core\handlers\base.py", line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\Users\catch\AppData\Roaming\Python\Python34\site-packages\django\views\decorators\csrf.py", line 58, in wrapped_view
    return view_func(*args, **kwargs)
  File "C:\Users\catch\AppData\Roaming\Python\Python34\site-packages\django\views\generic\base.py", line 68, in view
    return self.dispatch(request, *args, **kwargs)
  File "C:\Python34\lib\site-packages\rest_framework\views.py", line 483, in dispatch
    response = self.handle_exception(exc)
  File "C:\Python34\lib\site-packages\rest_framework\views.py", line 443, in handle_exception
    self.raise_uncaught_exception(exc)
  File "C:\Python34\lib\site-packages\rest_framework\views.py", line 480, in dispatch
    response = handler(request, *args, **kwargs)
  File "C:\Users\catch\PycharmProjects\myproject\myproj\apis\views.py", line 516, in get
    viewer=viewer_email)
  File "C:\Users\catch\PycharmProjects\myproject\myproj\apis\views.py", line 541, in update_track_info
    doc=doc)
  File "C:\Users\catch\PycharmProjects\myproject\myproj\apis\views.py", line 553, in es_update
    body=doc)
  File "C:\Python34\lib\site-packages\elasticsearch\client\utils.py", line 73, in _wrapped
    return func(*args, params=params, **kwargs)
  File "C:\Python34\lib\site-packages\elasticsearch\client\__init__.py", line 680, in update_by_query
    doc_type, '_update_by_query'), params=params, body=body)
  File "C:\Python34\lib\site-packages\elasticsearch\transport.py", line 318, in perform_request
    status, headers, data = connection.perform_request(method, url, params, body, ignore=ignore, timeout=timeout)
  File "C:\Python34\lib\site-packages\elasticsearch\connection\http_urllib3.py", line 128, in perform_request
    self._raise_error(response.status, raw_data)
  File "C:\Python34\lib\site-packages\elasticsearch\connection\base.py", line 122, in _raise_error
    raise HTTP_EXCEPTIONS.get(status_code, TransportError)(status_code, error_message, additional_info)
elasticsearch.exceptions.RequestError: TransportError(400, 'search_phase_execution_exception', 'Failed to parse query [delivery_reference_id:CAM_10_DATA_4_2017-03-07 18:02:07]')
完整的错误日志如下所示:

{
  'script': {
    'inline': 'ctx._source.viewers += info',
    'params': {
      'info': {
        'time': datetime.datetime(2017, 3, 7, 18, 8, 50),
        'viewer': 'abc@xyz.com'
      }
    }
  }
}
TransportError(400, 'search_phase_execution_exception', 'Failed to parse query [delivery_reference_id:CAM_10_DATA_4_2017-03-07 18:02:07]')
Traceback (most recent call last):
  File "C:\Users\catch\AppData\Roaming\Python\Python34\site-packages\django\core\handlers\exception.py", line 42, in inner
    response = get_response(request)
  File "C:\Users\catch\AppData\Roaming\Python\Python34\site-packages\django\core\handlers\base.py", line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "C:\Users\catch\AppData\Roaming\Python\Python34\site-packages\django\core\handlers\base.py", line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\Users\catch\AppData\Roaming\Python\Python34\site-packages\django\views\decorators\csrf.py", line 58, in wrapped_view
    return view_func(*args, **kwargs)
  File "C:\Users\catch\AppData\Roaming\Python\Python34\site-packages\django\views\generic\base.py", line 68, in view
    return self.dispatch(request, *args, **kwargs)
  File "C:\Python34\lib\site-packages\rest_framework\views.py", line 483, in dispatch
    response = self.handle_exception(exc)
  File "C:\Python34\lib\site-packages\rest_framework\views.py", line 443, in handle_exception
    self.raise_uncaught_exception(exc)
  File "C:\Python34\lib\site-packages\rest_framework\views.py", line 480, in dispatch
    response = handler(request, *args, **kwargs)
  File "C:\Users\catch\PycharmProjects\myproject\myproj\apis\views.py", line 516, in get
    viewer=viewer_email)
  File "C:\Users\catch\PycharmProjects\myproject\myproj\apis\views.py", line 541, in update_track_info
    doc=doc)
  File "C:\Users\catch\PycharmProjects\myproject\myproj\apis\views.py", line 553, in es_update
    body=doc)
  File "C:\Python34\lib\site-packages\elasticsearch\client\utils.py", line 73, in _wrapped
    return func(*args, params=params, **kwargs)
  File "C:\Python34\lib\site-packages\elasticsearch\client\__init__.py", line 680, in update_by_query
    doc_type, '_update_by_query'), params=params, body=body)
  File "C:\Python34\lib\site-packages\elasticsearch\transport.py", line 318, in perform_request
    status, headers, data = connection.perform_request(method, url, params, body, ignore=ignore, timeout=timeout)
  File "C:\Python34\lib\site-packages\elasticsearch\connection\http_urllib3.py", line 128, in perform_request
    self._raise_error(response.status, raw_data)
  File "C:\Python34\lib\site-packages\elasticsearch\connection\base.py", line 122, in _raise_error
    raise HTTP_EXCEPTIONS.get(status_code, TransportError)(status_code, error_message, additional_info)
elasticsearch.exceptions.RequestError: TransportError(400, 'search_phase_execution_exception', 'Failed to parse query [delivery_reference_id:CAM_10_DATA_4_2017-03-07 18:02:07]')
如果有人能弄明白就好了。如果需要更多信息,请告诉我


谢谢。提前感谢。

我认为您的查询语法不是最新的。我使用以下语法获得了很好的结果:

{
  "query": {
    "bool": {
      "must": [
        { "match": { "MYFIELD": "myoldvalue" } }
      ]
    }
  },
  "script": {
    "inline": "ctx._source.MYFIELD = \"mynewvalue\"",
    "lang": "painless"
  }
}

HTH:

您使用的是什么ES版本?弹性搜索版本:5.2.0我如何使用python弹性搜索客户端发出上述请求?只需将您提供的正文替换为我尝试过的:{'script':{'inline':'ctx.\u source.viewers+=info',params':{'info':{'viewer':'divij。sehgaal7@gmail.com“,”时间“:datetime.datetime2017,3,7,18,49,23}},'查询':{'bool':{'must':[{'match':{'delivery\u reference\u id':'CAM\u 10\u DATA\u 4\u 2017-03-07 18:02:07}}然后得到以下错误:elasticsearch.exceptions.TransportError:TransportError500,“脚本_异常”,“编译错误”@Divij Sehgal你找到解决方案了吗?我也找到了problem@gal007很长时间了,很难准确地记得我做了什么,但如果我记得正确的话,我认为阿尔夫的解决方案奏效了。