【发布时间】:2016-10-24 23:58:03
【问题描述】:
我们最近为 WooCommerce 集成了 ElasticPress,并对其代码进行了一些改进(通过它的过滤器),但遇到了一些似乎是 ElasticSearch API 限制的地方。我们对搜索订单时发送到弹性搜索引擎的查询进行了修改,以便搜索词作为部分搜索(很像 SQL 中的 LIKE 语句)。
它工作正常,除非查询中有特殊符号,如空格或 @ 符号。我读过可以通过转义特殊字符来避免这种情况,但我也没有运气。
我正在使用通配符查询,我尝试用转义版本替换空格,甚至 ?令牌(应该匹配任何单个字符)。也没有运气。
此查询有效:
"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 Service 作为服务提供商。他们正在使用严重过时的 ElasticSearch 版本(据我所知为 1.5.3),我不确定这是否是问题的原因之一。
谢谢
【问题讨论】:
-
meta._billing_full_name.value的映射是什么。是analyzed string. -
@Richa 我不确定。我刚刚安装了插件,并使用 ElasticPress 为网站编制了索引。我认为它不会产生任何特殊的东西。我应该如何检查该道具的映射是什么?
-
使用
curl -XGET 'http://serverIp:9200/index_name/_mapping/' -
这似乎是映射:https://paste2.org/09sEeE4D(发布外部链接以保持格式)。
-
这是完整的映射吗?似乎不完整
标签: php wordpress amazon-web-services elasticsearch