Elasticsearch: используйте регулярное выражение для поиска текста, содержащего da sh или знак минус - PullRequest
1 голос
/ 07 января 2020

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

{
  "query": {
        "bool": {
            "must": [
                {
                    "match": { "field1:field2" : "Complete" }
                },
                {
                    "bool": {
                        "should": [
                            {
                                "regexp": { "field1.field3" : ".*mysource_.+20190102" }
                            }
                        ]
                    }
                }
            ]
        }
    },
    "size":10000
}

Использование приведенного выше запроса работает нормально в большинстве случаев. Например, mysource_121_AB_PQ_20190102 (и аналогичные) выбираются правильно. Тем не менее, у меня есть текст, хранящийся как mysource_101_XY-FG_20190102, который не выбирается с использованием приведенного выше регулярного выражения.

Если я не использую регулярное выражение, простое сопоставление выбирает данные правильно. Только это регулярное выражение не работает над этим. Я полагаю, что это из-за дефиса, да sh или знака минус (-).

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

Обратите внимание, что индекс не поддерживается мы не можем запускать команды администратора для индекса.

1 Ответ

0 голосов
/ 07 января 2020

Если в вашем поле есть подполе с типом keyword, используйте (field1.field3.keyword):

{
"query": {
        "bool": {
            "must": [
                {
                    "match": { "field1:field2" : "Complete" }
                },
                {
                    "bool": {
                        "should": [
                            {
                                "regexp": { "field1.field3.keyword" : ".*mysource_.+20190102" }
                            }
                        ]
                    }
                }
            ]
        }
    },
    "size":10000
}

Надеюсь, это поможет

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