запрос по запросу возвращает 0 результатов - PullRequest
1 голос
/ 13 мая 2019

У меня есть следующий документ:

        {
            "_index": "testrest",
            "_type": "testrest",
            "_id": "sadfasdfw1",
            "_score": 1,
            "_source": {,
                "s_item_name": "Create",
                "request_id": "35",
                "Result": "Match",
            }
        },

Я пытаюсь получить записи с полем term значение Match в Result и request_id из 35.

Вот мой запрос:

{
  "query": { 
    "bool": { 
      "must": [ 
        { "term":  { "Result": "Match" }}
      ],
      "filter": {
        "term": {
            "request_id": "35"
        }
      }
    }
  }
}

Но я получаю 0 результаты.

Замена term на match дает мне результаты.

1 Ответ

1 голос
/ 13 мая 2019

Это потому, что Result является полем text, и поэтому оно анализируется, и значение индексируется как match вместо Match.

В общем, вам следует не используйте term запрос , но вместо этого предпочитайте match запрос.В вашем случае это решило бы проблему.

Если вы абсолютно хотите использовать запрос term и иметь поле с именем Result.keyword, то вы также можете сделать это.

Итакрезюмируя:

{
  "query": { 
    "bool": { 
      "must": [ 
        { "match":  { "Result": "Match" }}         <-- use match query
      ],
      "filter": {
        "term": {
            "request_id": "35"
        }
      }
    }
  }
}

или

{
  "query": { 
    "bool": { 
      "must": [ 
        { "term":  { "Result.keyword": "Match" }}  <-- use term query on keyword field
      ],
      "filter": {
        "term": {
            "request_id": "35"
        }
      }
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...