部分匹配在此查询中不起作用
Partial matching not working in this query
为什么以下只匹配完全,而不匹配部分?
body: {
query: {
filtered: {
filter: {
bool: {
should: [
{ query: { match: { "name": "*"+searchterm+"*" }}},
]
}
}
}
}
}
"*"+searchterm+"*"
应该匹配任何包含 searchterm
的单词。即,
item1
item2
0item
但它只匹配单词 exact searchterm
即,仅 item
。这是为什么?
如果 name
字段使用默认分析器,则在分析阶段丢弃星号通配符。因此,您总是会得到 name
恰好 sarchterm
的结果。您需要使用 Wildcard query 来匹配 name
字段值包含 searchterm
.
的任何文档
query: {
filtered: {
filter: {
bool: {
should: [
{
query: {
wildcard: {
"name": "*" + searchterm + "*"
}
}
}
]
}
}
}
}
为什么以下只匹配完全,而不匹配部分?
body: {
query: {
filtered: {
filter: {
bool: {
should: [
{ query: { match: { "name": "*"+searchterm+"*" }}},
]
}
}
}
}
}
"*"+searchterm+"*"
应该匹配任何包含 searchterm
的单词。即,
item1
item2
0item
但它只匹配单词 exact searchterm
即,仅 item
。这是为什么?
如果 name
字段使用默认分析器,则在分析阶段丢弃星号通配符。因此,您总是会得到 name
恰好 sarchterm
的结果。您需要使用 Wildcard query 来匹配 name
字段值包含 searchterm
.
query: {
filtered: {
filter: {
bool: {
should: [
{
query: {
wildcard: {
"name": "*" + searchterm + "*"
}
}
}
]
}
}
}
}