0

公式の 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 ログ データです。

どんな助けでも大歓迎です。:)

4

1 に答える 1