公式の 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
}
}
]
xyz
ただし、次のようなクエリを index で個別に実行します。
{
'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 ログ データです。
どんな助けでも大歓迎です。:)