AWS中的Elasticsearch通配符查询和空间的问题



我们最近将Elasticpress集成了WooCommerce,并对其代码进行了一些改进(通过其过滤器),但击中了一些似乎是Elasticsearch API的局限性。我们已经对搜索订单时发送到弹性搜索引擎的查询进行了mod,以便搜索词可以作为部分搜索(非常类似于SQL中的类似语句)。

它可以正常工作,除非查询中有特殊符号,例如空间或 @符号。我读到可以通过逃脱特殊角色来避免这种情况,但是我也没有运气。

我正在使用通配符查询,我尝试使用其逃脱版本,甚至是?令牌(应与任何单个字符匹配)。而且也没有运气。

此查询有效:

"query": {
    "wildcard": {
        "meta._billing_full_name.value": "*manish*"
    }
}

这也是如此

"query": {
    "wildcard": {
        "meta._billing_full_name.value": "*kumar*"
    }
}

这不是:

"query": {
    "wildcard": {
        "meta._billing_full_name.value": "*manish k*"
    }
}

顺便说一句,我们将AWS Elasticsearch服务作为服务提供商。他们使用的是Elasticsearch的严重过时版本(据我所知,1.5.3),我不确定这是否可能是问题的原因。

谢谢

根据您所示的映射value,似乎是多场。这意味着它已被索引为analyzednot_analyzed字符串。

对于not_analyzed IT版本,请使用以下查询:

"query": {
"wildcard": {
    "meta._billing_full_name.value.raw": "*manish k*"
  }
}

现在应该起作用。

最新更新