Elasticsearch - как найти точное совпадение строки с помощью специального символа (-) в документе json - PullRequest
0 голосов
/ 28 сентября 2018

Я использую версию ES 5.x, и это мой пример набора данных json.

{"id":"1"}
{.... "company" : "HCL-US",....}
{"id":"2"}
{.... "company" : "HCL",....}
{"id":"3"}
{.... "company" : "HCL-IND",....}
{"id":"4"}
{.... "company" : "HCL-AUS",....}

Как мне найти и узнать, кто принадлежит к "HCL-US".Я попытался использовать этот запрос "_search? q = company:" HCL-US "", он возвращает результат HCL *.Как я могу сопоставить точную строку со специальной строкой.

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

Вы можете использовать Term Query, который соответствует точному сроку.Предполагая, что company является полем text, вы получите keyword версию того же самого, следующий запрос должен выполнить

{

 "query": {
  "term": {
    "company.keyword": {
    "value": "HCL-US"
    }
  }
 }
}
0 голосов
/ 28 сентября 2018

1 / Вы можете указать анализатор пробелов в отображении для поля company.Этот анализатор будет разбивать запрос только по пробелам, в то время как стандарт будет разбивать не буквенно-цифровые символы.

Стандартный анализатор используется, когда анализатор не определен.

2 / Или вы можете запросить на company.keyword, который автоматически создается для текстового поля с 5.X.Это ключевое слово не анализируется, и вы можете смело использовать запрос термина для точного соответствия.

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