在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
但最匹配的是姜汁啤酒,其中包含确切的单词,然后是羽衣甘蓝,然后是基于单词计数的胭脂红,然后是黑小麦面粉全谷物。 有人知道如何实现这一目标吗?
答案 0 :(得分:0)
我认为您应该使用*ale
。在您的查询中,它在ale
字段的所有值中搜索name
。这些所有值Kale, Triticale Flour Whole Grain, ginger ale, Nopales
包含ale
。当您使用*ale
查询时,它将搜索以ale
结尾的字符串。您也可以像这样"query" : "(*ale)OR(ale*)"
使用不同的通配符。