mysql field = "value" в эластичном поиске - PullRequest
1 голос
/ 19 февраля 2020

Я хочу отображать только те элементы, которые содержат само слово при поиске в "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'

1 Ответ

0 голосов
/ 19 февраля 2020

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

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

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

...