我有一个值列表,我希望在product_code
字段中包含这些值中的任意值的所有文档。匹配具有多个值的查询
我想这一点,但即使它不给一个错误,它只是给我的文件之一:
"query": {
"match": {
"product_code": {
"query": ["ABC 4", "ABC 5"]
}
}
}
所以基本上,我在寻找terms
过滤器的功能,但与分析。
我当然可以这样做:
"bool": {
"should": [
{
"query": {
"match": {
"product_code": "ABC 4"
}
}
},
{
"query": {
"match": {
"product_code": "ABC 5"
}
}
}
]
}
不过这样会相当冗长的长列表。
product_code
这样定义:
"product_code": {
"type": "string",
"analyzer": "product_code",
}
与PRODUCT_CODE分析:
"product_code": {
"type": "custom",
"filter": [
"lowercase",
"trim"
],
"tokenizer": "keyword"
}
这看起来不错...除了其他引号之外,还有什么特殊字符可以在引号内跳过吗?或者只是把没有引号,但逃脱一切特别包括空间? – AndreKR 2014-10-01 09:17:58
您需要转义Lucene在此列出的特殊字符:http://lucene.apache.org/core/2_9_4/queryparsersyntax.html#Escaping特殊字符 – 2014-10-01 10:25:37