Elasticsearch одно регулярное выражение для нескольких полей - PullRequest
0 голосов
/ 25 сентября 2018

Я новичок в Elasticsearch.Мне нужно написать запрос, чтобы найти соответствие регулярному выражению в одном из полей.

Если я ищу регулярное выражение в одном поле, все работает нормально (код PHP):

$data = ['body' => ['query' => ['regexp' => ['abstract' => ".*searchtext.*"]]]];

что делатьделать, если я хочу найти документы, в которых хотя бы одно поле удовлетворяет регулярному выражению regexp?

Этот запрос:

$data = [
  'body' => [
    'query' => [
      'multi_match' => [
        'query' => 'searchtext',
        'fields' => [
          'type',
          'title',
          'abstract',
          'body_text'
        ]
      ]
    ]
  ]
];

находит документы только с целым словом "searchtext".

С уважением, Томас

1 Ответ

0 голосов
/ 26 сентября 2018

Найден ответ:

$data = [
  'body' => [
    'query' => [
      'bool' => [
        'should' => [
          ['regexp' => ['type' => ".*searchtext.*"]],
          ['regexp' => ['title' => ".*searchtext.*"]],
          ['regexp' => ['abstract' => ".*searchtext.*"]],
          ['regexp' => ['body_text' => ".*searchtext.*"]],
        ]
      ]
    ]
  ]
];

не так элегантно, как запрос multi_match, но работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...