[elasticsearch中的mysql字段=“值”

问题描述 投票:1回答:1

我只想在“ 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'
elasticsearch exact-match
1个回答
0
投票

好吧,我假设您是自动映射,或在映射中使用文本。在查询中指定.keyword。请注意,这是区分大小写的。

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

如果您只想使用完全匹配来查询您的身体字段。您需要使用关键字重新编制索引。看一下:Exact match in elastic search query

© www.soinside.com 2019 - 2024. All rights reserved.