首页 > 解决方案 > 使用 Elasticsearch 搜索部分单词或通配符

问题描述

当我如下搜索时,我成功获得了结果。这也适用于句子(或完整的单词)。但是,部分单词没有找到任何东西。

例如,让我们看一下这句话:

embedded image can place here.

当我搜索embedded时,它会找到此内容。但embed什么也没找到。

我来给你展示:

GET _search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "content": "Embedded"
          }
        }
      ],
      "filter": [
        {
          "term": {
            "user_id": 10
          }
        }
      ]
    }
  }
}

结果

{
  "took" : 1,
  "timed_out" : false,
  "_shards" : {
    "total" : 6,
    "successful" : 6,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 1,
    "max_score" : 0.2876821,
    "hits" : [
      {
        "_index" : "inbox",
        "_type" : "mailbox",
        "_id" : "8c76f6a5-115a-4102-94e6-a3abef914d13",
        "_score" : 0.2876821,
        "_source" : {
          "user_id" : 10,
          "content" : "Embedded image"
        }
      }
    ]
  }
}

但是,让我们只搜索单词embed

GET _search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "content": "Embed"
          }
        }
      ],
      "filter": [
        {
          "term": {
            "user_id": 10
          }
        }
      ]
    }
  }
}

结果:空...

{
  "took" : 0,
  "timed_out" : false,
  "_shards" : {
    "total" : 6,
    "successful" : 6,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 0,
    "max_score" : null,
    "hits" : [ ]
  }
}

像这样搜索时是否可以找到相关内容?请注意,它也应该在我搜索时找到embed image

GET _search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "content": "embed image"
          }
        }
      ],
      "filter": [
        {
          "term": {
            "user_id": 10
          }
        }
      ]
    }
  }
}

标签: elasticsearch

解决方案


我通过使用解决了这个问题query_string

GET _search
{
  "query": {
    "bool": {
      "must": [
        {
          "query_string": {
            "query": "embed image",
            "fields": [
              "content"
            ]
          }
        }
      ],
      "filter": [
        {
          "term": {
            "user_id": 10
          }
        }
      ]
    }
  }
}

推荐阅读