弹性查询 DSL:术语过滤器中的通配符?
Elastic query DSL: Wildcards in terms filter?
我正在尝试使用术语过滤器来过滤文档。我不确定如何在过滤器中引入通配符。我试过这样的事情:
"filter":{
"bool":{
"must":{
"terms":{
"wildcard" : {
"aircraft":[
"a380*"
]
}
}
}
}
}
但是我得到了 SearchParseException。有没有办法在过滤器框架内使用通配符?
terms
过滤器不支持通配符,但查询支持。改用这个查询
{
"query": {
"bool": {
"must": {
"wildcard": {
"aircraft": "a380*"
}
}
}
}
}
或者如果您绝对需要使用过滤器,您也可以尝试使用 regexp
过滤器:
{
"query": {
"filtered": {
"filter": {
"bool": {
"must": {
"regexp": {
"aircraft": "a380.*"
}
}
}
}
}
}
}
更新:
在最新的 ES 版本中,使用以下查询代替,因为 filtered
已被删除:
{
"query": {
"bool": {
"filter": {
"regexp": {
"aircraft": "a380.*"
}
}
}
}
}
我正在尝试使用术语过滤器来过滤文档。我不确定如何在过滤器中引入通配符。我试过这样的事情:
"filter":{
"bool":{
"must":{
"terms":{
"wildcard" : {
"aircraft":[
"a380*"
]
}
}
}
}
}
但是我得到了 SearchParseException。有没有办法在过滤器框架内使用通配符?
terms
过滤器不支持通配符,但查询支持。改用这个查询
{
"query": {
"bool": {
"must": {
"wildcard": {
"aircraft": "a380*"
}
}
}
}
}
或者如果您绝对需要使用过滤器,您也可以尝试使用 regexp
过滤器:
{
"query": {
"filtered": {
"filter": {
"bool": {
"must": {
"regexp": {
"aircraft": "a380.*"
}
}
}
}
}
}
}
更新:
在最新的 ES 版本中,使用以下查询代替,因为 filtered
已被删除:
{
"query": {
"bool": {
"filter": {
"regexp": {
"aircraft": "a380.*"
}
}
}
}
}