使用通配符运算符,我可以匹配从某个值开始的术语:
{
"query": {
"query_string" : {
"query" : "subject:cell*"
}
}
}
Run Code Online (Sandbox Code Playgroud)
subject这里的字段是一个keyword字段(未分析).这很好,但我无法弄清楚如何找到以"蜂窝控制"开头的术语.尝试双引号没有产生预期的结果:
{
"query": {
"query_string" : {
"query" : "subject:\"cellular contr*\""
}
}
}
Run Code Online (Sandbox Code Playgroud)
注意:短语搜索在完全匹配时工作正常,而不是通配符.我猜测星号不会被解释为双引号内的通配符运算符.那是对的吗?还有其他方法可以使用带有短语的通配符运算符吗?
注意:我必须使用查询字符串查询,因为查询来自用户输入.
(我知道我可以诉诸regexp,但不愿意)
小智 7
除了 Hemed 指出的自定义分析器之外,您还需要进行如下搜索 -
{
"query": {
"query_string" : {
"query" : "subject:cellular\\ contr*"
}
}
}
Run Code Online (Sandbox Code Playgroud)
经过大量研究和尝试后找到了它!
尝试这个:
{
"query": {
"query_string" : {
"query" : "subject:"cellular contr*",
"split_on_whitespace" : false
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4952 次 |
| 最近记录: |