Если вы используете запрос соответствия без каких-либо изменений, тогда он использует тот же анализатор, который использовался для индексации поля, ie генерирует те же типы токенов для вашего поискового запроса и должен выдать вам результат поиска.
Согласно запросу Elasticsearch Match Do c:
Предоставленный текст анализируется перед сопоставлением.
Запрос на сопоставление является стандартным запросом для выполнения полного -текстовый поиск
Поскольку вы не предоставили никакого образца, позвольте мне показать его, используя мои данные образца:
Index def
{
"mappings" :{
"properties" :{
"title" :{
"type" : "text" --> default standard analyzer would be used.
}
}
}
}
Примеры документов индекса
{
"title": "foo bar"
}
{
"title": "hello world"
}
поиск foo
{
"query" :{
"match" :{
"title" :"foo"
}
}
}
Результат
"hits": [
{
"_index": "standard",
"_type": "_doc",
"_id": "1",
"_score": 0.4700036,
"_source": {
"title": "foo bar"
}
}
]
Искать foo bar
{
"query" :{
"match" :{
"title" :"foo bar"
}
}
}
Результат
"hits": [
{
"_index": "standard",
"_type": "_doc",
"_id": "1",
"_score": 0.9400072,
"_source": {
"title": "foo bar"
}
}
]
Примечание. Поиск foo
и foo bar
оба совпадения в качестве стандартного токена разделяют токены на пробелы, и вы можете использовать анализ API , чтобы проверить это, как показано ниже:
{
"text" : "foo bar",
"analyzer" : "standard"
}
{
"tokens": [
{
"token": "foo",
"start_offset": 0,
"end_offset": 3,
"type": "<ALPHANUM>",
"position": 0
},
{
"token": "bar",
"start_offset": 4,
"end_offset": 7,
"type": "<ALPHANUM>",
"position": 1
}
]
}
Изменить: на основе комментария из OP (@ AKA SH GUPTA)
Теперь Elasti c предоставляет поле ключевого слова по умолчанию для текстового поля, но это только для сопоставления Dynami c, а не для сопоставления stati c и это тоже в последних версиях. Пожалуйста, обратитесь к к этой записи в блоге, и если вы используете сопоставление stati c, вы можете определить собственное соответствующее поле keyword
.