Elasticsearch query_string使用通配符搜索

时间:2016-11-28 10:54:52

标签: elasticsearch

使用以下查询时弹出搜索没有返回结果。

{  
  "query":{  
    "filtered":{  
      "query":{  
        "bool":{  
          "should":[  
            {  
              "query_string":{  
                "query":"a*",
                "analyze_wildcard":true
              }
            }
          ]
        }
      }
    }
  }
}

当我使用" al *"而不是" a *",我得到了正确的结果。这是发生在" a *"只要。当我使用任何其他像" b *"或" c *"等,结果是正确的

我使用的是elasticsearch版本0.90.12

1 个答案:

答案 0 :(得分:0)

这是因为a是一个停用词,会被分析查询的标准分析器消除。您可以通过指定其他分析器来解决此问题,例如keyword而不是使用standard分析器。另一种方法是将analyze_wildcard设置为false

{  
  "query":{  
    "filtered":{  
      "query":{  
        "bool":{  
          "should":[  
            {  
              "query_string":{  
                "query":"a*",
                "analyze_wildcard":true,
                "analyzer": "keyword"
              }
            }
          ]
        }
      }
    }
  }
}
相关问题