Вам необходимо использовать токенайзер UAX_URL для поиска по полям URL.
Вы можете создать свой собственный анализатор с помощью токена UAX_URL и использовать тот же запрос match
, который вы используете на данный момент, чтобы получить ожидаемый результат.
Отображение индекса
{
"settings": {
"analysis": {
"analyzer": {
"my_analyzer": {
"tokenizer": "my_tokenizer"
}
},
"tokenizer": {
"my_tokenizer": {
"type": "uax_url_email",
"max_token_length": 5
}
}
}
},
"mappings": {
"properties": {
"url": {
"type": "text",
"analyzer": "my_analyzer"
}
}
}
}
Похоже, в вашем случае поле URL использует текстовое поле в Elasticsearch, который использует стандартный анализатор и использует _analyze API, вы можете проверить токены, сгенерированные вашим полем URL.
Используя стандартный анализатор
POST _analyze/
{
"text": "https://www.microsoft.com",
"analyzer" : "standard"
}
Токены
{
"tokens": [
{
"token": "https",
"start_offset": 0,
"end_offset": 5,
"type": "<ALPHANUM>",
"position": 0
},
{
"token": "www.microsoft.com",
"start_offset": 8,
"end_offset": 25,
"type": "<ALPHANUM>",
"position": 1
}
]
}
Используя токенайзер UAX_URL
{
"text": "https://www.microsoft.com",
"tokenizer" : "uax_url_email"
}
И сгенерированные токены
{
"tokens": [
{
"token": "https://www.microsoft.com",
"start_offset": 0,
"end_offset": 25,
"type": "<URL>",
"position": 0
}
]
}