поле mysql=значение в elasticsearch

Я хочу отображать только те элементы, которые содержат само слово при поиске "google" Как я могу искать только те элементы, которые содержат только слово "google"?

Тело запроса (запрос создан в почтальоне)

{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "body": "google"
          }
        }
      ]
    }
  }
}

Тело ответа (запрос создан в почтальоне)

{
  "took": 0,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 3,
      "relation": "eq"
    },
    "max_score": 0.6587735,
    "hits": [
      {
        "_index": "s_t",
        "_type": "_doc",
        "_id": "3",
        "_score": 0.6587735,
        "_source": {
          "body": "google"
        }
      },
      {
        "_index": "s_t",
        "_type": "_doc",
        "_id": "4",
        "_score": 0.5155619,
        "_source": {
          "body": "google map"
        }
      },
      {
        "_index": "s_t",
        "_type": "_doc",
        "_id": "5",
        "_score": 0.5155619,
        "_source": {
          "body": "google-map"
        }
      }
    ]
  }
}

Мне нужен этот вывод (запрос создан в почтальоне)

{
  "took": 2,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 3,
      "relation": "eq"
    },
    "max_score": 0.69381464,
    "hits": [
      {
        "_index": "s_t",
        "_type": "_doc",
        "_id": "3",
        "_score": 0.69381464,
        "_source": {
          "body": "google"
        }
      }
    ]
  }
}

В mysql с этим запросом я достигаю своей цели.

Аналогичный запрос в mysql:

select * from s_t where body='google'

person user2280483    schedule 19.02.2020    source источник
comment
Пожалуйста, не размещайте код в виде изображений — используйте форматированный текст. См. здесь для более подробной информации, почему: meta.stackoverflow.com/questions/285551   -  person a_horse_with_no_name    schedule 19.02.2020


Ответы (1)


ну, я предполагаю, что вы автоматизируете отображение или используете текст в своих сопоставлениях. укажите .keyword в запросе. Обратите внимание, что это чувствительно к регистру.

{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "body.keyword": "google"
          }
        }
      ]
    }
  }
}

Если вы хотите запросить только свое поле тела, используя точное совпадение. Вам нужно переиндексировать его, используя ключевое слово. Взгляните на: Точное совпадение в эластичном поисковом запросе

person LeBigCat    schedule 19.02.2020