使用ElasticSeach搜索字符串的一部分

时间:2018-07-30 08:49:55

标签: elasticsearch search match

在ElasticSearch中,我尝试使其搜索单词的一部分。 我的示例数据是

{
  "_id" : "1",
  "name" : "Nopales",
}
{
  "_id" : "2",
  "name" : "ginger ale",
}
{
  "_id" : "3",
  "name" : "Kale",
}
{
  "_id" : "4",
  "name" : "Triticale Flour Whole Grain",
} 

并且请求是找到与单词“ ale is”匹配的单词

GET /_search
{
    "query": {
                "query_string" : {"default_field" : "name", "query" : "*ale*"}
            } 

}

,它返回类似

的结果
Kale, Triticale Flour Whole Grain, ginger ale, Nopales

但最匹配的是姜汁啤酒,其中包含确切的单词,然后是羽衣甘蓝,然后是基于单词计数的胭脂红,然后是黑小麦面粉全谷物。 有人知道如何实现这一目标吗?

1 个答案:

答案 0 :(得分:0)

我认为您应该使用*ale。在您的查询中,它在ale字段的所有值中搜索name。这些所有值Kale, Triticale Flour Whole Grain, ginger ale, Nopales包含ale。当您使用*ale查询时,它将搜索以ale结尾的字符串。您也可以像这样"query" : "(*ale)OR(ale*)"使用不同的通配符。