Эластичный поиск не рассматривается как строковое поле по умолчанию и не дает правильных результатов поиска - PullRequest
0 голосов
/ 12 июня 2018

Я запрашиваю ElasticSearch, используя следующий запрос, и он дает мне результаты в соответствии с запросом вместе с некоторыми другими не относящимися к делу данными.

GET items/_search
{
  "query" :{
      "match": {"code": "*7000-8002-W*"}
  }
}

Но если я сделаю такой запрос, я получу правильноеРезультаты:

GET items/_search
{
  "query" :{
      "match": {"code": "*S6617523*"}
  }
}

Почему первый запрос возвращает некоторые другие не относящиеся к делу данные?

1 Ответ

0 голосов
/ 12 июня 2018

Такое поведение обусловлено тем, как ES анализирует строку.В этом случае вам нужно применить wildcard запрос к необработанному полю code, например

{ 
"query": { 
 "wildcard": { 
  "code.keyword": { 
  "value": "*7000-6000*" 
    } 
   } 
  } 
 }

Java API, или соответствующий ему будет

QueryBuilders.wildcardQuery("code.keyword","*7000-6000*");

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

...