部分匹配在此查询中不起作用

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 + "*" 
                            }
                        }
                    }
                ]
            }
        }
    }
}