Elasticsearch multisearch返回错误的响应,但单个查询返回正确的响应

时间:2017-06-06 09:23:12

标签: python elasticsearch elasticsearch-py

使用官方python客户端在 Elasticsearch 上运行以下查询会返回错误的响应,但单独运行它们会给出正确的响应。

以下对象作为search_doc传递给{!join from=attribute1 to=attribute2 fromIndex="xyz:8983/solr/core2"} attribute3:*

elasticsearch.msearch()

并返回以下响应:

[
  {
    'type': 1,
    'index': 'xyz'
  },
  {
    'query': {
      'bool': {
        'must': [
          {
            'match_phrase': {
              'messageid': 'DEL_1CKCJAR'
            }
          },
          {
            'regexp': {
              'dsn': '2.[0-9].[0-9]'
            }
          }
        ]
      }
    }
  },
  {
    'type': 1,
    'index': 'xyz'
  },
  {
    'query': {
      'bool': {
        'must': [
          {
            'match_phrase': {
              'messageid': 'DEL_1CKCJAR'
            }
          },
          {
            'regexp': {
              'dsn': '5.[0-9].[0-9]'
            }
          }
        ]
      }
    }
  },
  {
    'type': 1,
    'index': 'xyz'
  },
  {
    'query': {
      'bool': {
        'must': [
          {
            'match_phrase': {
              'messageid': 'DEL_1CKCJAR'
            }
          },
          {
            'regexp': {
              'dsn': '4.[0-9].[0-9]'
            }
          }
        ]
      }
    }
  }
]

但是,在索引[ { 'took': 42, 'hits': { 'hits': [ ], 'total': 0, 'max_score': None }, 'status': 200, 'timed_out': False, '_shards': { 'failed': 0, 'total': 5, 'successful': 5 } }, { 'took': 41, 'hits': { 'hits': [ ], 'total': 0, 'max_score': None }, 'status': 200, 'timed_out': False, '_shards': { 'failed': 0, 'total': 5, 'successful': 5 } }, { 'took': 41, 'hits': { 'hits': [ ], 'total': 0, 'max_score': None }, 'status': 200, 'timed_out': False, '_shards': { 'failed': 0, 'total': 5, 'successful': 5 } } ] 上单独运行,查询如下:

xyz

返回以下回复:

{
  'query': {
    'bool': {
      'must': [
        {
          'match_phrase': {
            'messageid': 'DEL_1CKCJAR'
          }
        },
        {
          'regexp': {
            'dsn': '4.[0-9].[0-9]'
          }
        }
      ]
    }
  }
}

,这是所需的响应。到目前为止,我无法弄清楚为什么单个请求有效,但multi_search请求却没有。

注意:正在搜索的数据是Elasticsearch日志数据。

感谢任何帮助。 :)

1 个答案:

答案 0 :(得分:0)

我说您的多重搜索查询使用错误的type

{
    'type': 1,
    'index': 'xyz'
}

单个搜索查询返回的文档的类型为log。要么完全忽略该类型,要么使用log,您的查询应返回所需的结果。