为什么以下只匹配完全匹配,而不是部分匹配?
body: {
query: {
filtered: {
filter: {
bool: {
should: [
{ query: { match: { "name": "*"+searchterm+"*" }}},
]
}
}
}
}
}
"*"+searchterm+"*"
应匹配包含searchterm
的任何字词。即,
item1
item2
0item
但它只匹配单词 exact searchterm
,即仅item
。这是为什么?
答案 0 :(得分:5)
如果name
字段使用默认分析器,则在分析阶段会删除星号通配符。因此,您始终会得到name
正好sarchterm
的结果。您需要使用Wildcard query来匹配name
字段的值包含searchterm
的任何文档。
query: {
filtered: {
filter: {
bool: {
should: [
{
query: {
wildcard: {
"name": "*" + searchterm + "*"
}
}
}
]
}
}
}
}