在弹性搜索中搜索通配符短语



我有一个可用的通配符搜索,但它不接受空白。我已经尝试过match_phrase,但它只搜索精确的单词。这是我想要的搜索结果

项目:"Project One Sample",Project Two Sample


这是我的工作代码

GET <index_name>/_search
{
"query": {
"bool": {
"must": [
{
"query_string": {
"query": "*roj*",
"fields":["field_1", "field_2"]
}
}
]
}
}
} 


UPDATE
我刚刚意识到查询字符串的一个字段是时间戳,这会导致错误。现在我的问题是query_string只搜索每个前缀,它不包括搜索中的下一个前缀

ie
项目:"项目一个样本",项目二个样本">
输入:ect One">
结果:"Project One Sample",Project Two Sample">

您可以这样搜索:

*ect One

例如:

GET <index_name>/_search
{
"query": {
"bool": {
"must": [
{
"query_string": {
"query": "*ect One",
"fields":["field_1", "field_2"]
}
}
]
}
}
}

您可以查看此以了解更多信息。

终于找到了解决方案。

query_string的默认操作符是OR,这就是为什么它只显示第一个前缀的搜索结果。要获得前缀的结果,请使用AND运算符

来源:query_string

最新更新