Есть способы сделать это:
Использование анализатора
Вам нужно использовать правильный Анализатор для вашей области. Elasticsearch по умолчанию использует Standard Analyzer , и если вы хотите сохранить всю строку в таком виде, вам необходимо убедиться, что вы используете Keyword Analyzer .
И тогда вы можете использовать для этого простой запрос на совпадение.
POST <your_index_name>/_search
{
"query": {
"match": {
"your_field_name": "Projeto de Lei"
}
}
}
Использование термина Query
В качестве альтернативы Elasticsearch предоставляет вам тип данных keyword
, который, в свою очередь, использует анализатор ключевых слов.
Затем вы можете использовать Term Query . Ссылка, которую я упомянул, содержит хорошую информацию по этому вопросу.
Ваш запрос будет в форме ниже, а your_field_name
имеет ключевое слово типа
POST <your_index_name>/_search
{
"query": {
"term": {
"your_field_name": "Projeto de Lei"
}
}
}
Ну, вы также можете использовать match
или match_phrase
, но убедитесь, что вы используете его для поля, имеющего тип keyword
для точного соответствия.
POST <your_index_name>/_search
{
"query": {
"match_phrase": {
"your_field_name": "Projeto de Lei"
}
}
}
Я бы порекомендовал создать Multi-Field для поля, к которому вы обращаетесь.
Таким образом, вы можете выполнять как точный поиск по ключевым словам, используя Term Query (рекомендуемый подход для точного соответствия), так и в текстовом поле вы можете выполнять простой текстовый поиск (возвращать результаты, которые вы наблюдаете в настоящее время) ,
Надеюсь, это поможет!