ElasticSearch Query не возвращает точную строку - PullRequest
0 голосов
/ 29 октября 2018

Как сделать запрос, чтобы вернуть только "Projeto de Lei"? В настоящее время запрос возвращает «Projeto de Lei X», «Projeto de Lei Y», «Projeto de Lei XYZ» и т. Д. И т. Д.

{
    "query" : {
    "query_string" : { 
        "query" : "monkey AND descricaoProposicao:Projeto+de+Lei", "default_operator": "AND"
    }
 }

}

1 Ответ

0 голосов
/ 30 октября 2018

Есть способы сделать это:

Использование анализатора

Вам нужно использовать правильный Анализатор для вашей области. 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 (рекомендуемый подход для точного соответствия), так и в текстовом поле вы можете выполнять простой текстовый поиск (возвращать результаты, которые вы наблюдаете в настоящее время) ,

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

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