【发布时间】:2014-09-16 09:16:19
【问题描述】:
我的 ElasticSearch v1.2.1 中有一些文档,例如:
{
"tempSkipAfterSave": "false",
"variation": null,
"images": null,
"name": "Dolce & Gabbana Short Sleeve Coat",
"sku": "MD01575254-40-WHITE",
"user_id": "123foo",
"creation_date": null,
"changed": 1
}
其中sku 可以是一个变体,例如:MD01575254-40-BlUE、MD01575254-38-WHITE
我可以让我的弹性搜索查询使用这个:
{
"size": 1000,
"from": 0,
"filter": {
"and": [
{
"regexp": {
"sku": "md01575254.*"
}
},
{
"term": {
"user_id": "123foo"
}
},
{
"missing": {
"field": "project_id"
}
}
]
},
"query": {
"match_all": {}
}
}
我得到了 sku 的所有变体:MD01575254*
但是,破折号'-'真的把我搞砸了
当我将正则表达式更改为:
"regexp": {
"sku": "md01575254-40.*"
}
我无法返回任何结果。我也试过了
- “sku”:“md01575254-40.*”
- “sku”:“md01575254\-40.*”
- “sku”:“md01575254-40-.*”
- ...
似乎无法让它工作?我在这里没有错吗?
【问题讨论】:
-
使用任何 JSON 解析库。
-
将
-放入 char 类中,例如[-] -
这实际上是从 json 解析库生成的,[-] 不起作用
标签: regex lucene elasticsearch