使用官方 python 客户端在Elasticsearch上运行以下查询会返回错误的响应,但单独运行它们会给出正确的响应。
以下对象作为 search_doc 传递给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
}
}
]
但是,在 index 上单独运行xyz
,查询如下:
{
'query': {
'bool': {
'must': [
{
'match_phrase': {
'messageid': 'DEL_1CKCJAR'
}
},
{
'regexp': {
'dsn': '4.[0-9].[0-9]'
}
}
]
}
}
}
返回以下响应:
{
"took": 6,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 18,
"max_score": 2.7300916,
"hits": [
{
"_index": "xyz",
"_type": "log",
"_id": "3A91F141442",
"_score": 2.7300916,
"_source": {
"pid": "13034",
"type": "log",
"logsource": "localhost",
"qid": "3A91F141442",
"@timestamp": "2017-06-05T16:44:16.177Z",
"@version": "1",
"host": "localhost.localdomain",
"client": "unknown[XXX.XXX.XXX.XXX]",
"messageid": "20170606062113.12268.36913.DEL_1CKCJAR@localhost.localdomain>",
"nrcpt": "1",
"queuestatus": "queue active",
"size": "1297",
"from": "asdfasdfasdf@gmail.com",
"reason": "(connect to mx2.hotmail.com[XXX.XXX.XXX.XXX]:25: Connection timed out)",
"relayhost": "none",
"result": "deferred",
"delay": "8707",
"to": "abcdefg@outlook.com",
"dsn": "4.4.1"
}
},
....
}
,这是期望的响应。到目前为止,我无法弄清楚为什么单个请求有效但 multi_search 请求无效。
注意:被搜索的数据是 Elasticsearch 日志数据。
任何帮助表示赞赏。:)