弹性搜索,像“ TEXT%”这样的位置搜索数据?

时间:2019-10-02 21:36:13

标签: elasticsearch

我想找到以我要寻找的字符开头的句子或单词,我应该怎么做?

例如:

获取这样的数据列表

automatic car
car
carpet
car accessories
car battery
cast
game cards
race car

搜索“汽车”一词时,会发现以下数据。

car
car accessories
car battery
carpet

搜索单词“ ca”时,我发现以下数据

cast
car
car accessories
car battery
carpet

也就是说,我不希望他搜索整个句子,而只是希望他搜索以搜索字符开头的单词。

以sql为例,我想对'car%'这样的地方进行等效搜索

2 个答案:

答案 0 :(得分:0)

您可以使用Wildcard query

GET /_search
{
    "query": {
        "wildcard": {
            "field_name": {
                "value": "ca*"
            }
        }
    }
}

此外,如果您要实现类似 autocomplete 的功能,请阅读Suggesters文档

答案 1 :(得分:0)

Elasticsearch具有称为前缀查询的功能,该功能可在提供的字段中返回包含特定prefix的文档。wildcard也应该对您有用。

 GET /_search
 {
   "query": {
      "prefix" : { "your_index_field" : "car" }
    }
  }

更多信息https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-prefix-query.html#prefix-query-short-ex