Javascript Elasticsearch正则表达式筛选器语法,带有小写\u扩展\u术语
问题: 我想执行一个匹配文本的查询,然后对某个字段执行正则表达式过滤器。 就我个人而言,我无法找出正则表达式过滤器的正确语法。 (我正在使用node.js客户端执行查询)Javascript Elasticsearch正则表达式筛选器语法,带有小写\u扩展\u术语,javascript,node.js,elasticsearch,Javascript,Node.js,elasticsearch,问题: 我想执行一个匹配文本的查询,然后对某个字段执行正则表达式过滤器。 就我个人而言,我无法找出正则表达式过滤器的正确语法。 (我正在使用node.js客户端执行查询) 说明: 我的文档中的land字段设置为索引:“未分析”。我已经验证了查询在没有filter子句的情况下是有效的。我已经核实了土地区域中有一些项目的模式,如'T2-R3'。通过阅读文档,我了解到有必要在查询中包含lowercase\u expanded\u terms:false参数,因为正则表达式扩展的默认行为只是小写 我的
说明: 我的文档中的
land
字段设置为索引:“未分析”
。我已经验证了查询在没有filter子句的情况下是有效的。我已经核实了土地区域中有一些项目的模式,如'T2-R3'
。通过阅读文档,我了解到有必要在查询中包含lowercase\u expanded\u terms:false
参数,因为正则表达式扩展的默认行为只是小写
我的问题是什么:
es.search({
index: index_list,
type: 'page',
body: {
query: {
bool: {
must: [
{match: { _all: {
"query": search_text,
"operator": "and"
}}},
],
filter: [
{"regexp": {land: 'T*',
lowercase_expanded_terms: false}}
]
}
},
aggs: {
"top_tag_hits":{
terms: {
field: "agg_index",
size: agg_size
},
aggs: {
"hits":{
top_hits: {
size: agg_size
}
}
}
}
},
},
explain: true,
size: result_size,
}).then(function (resp) {
var hits = resp.hits.hits;
var aggs = resp.aggregations;
response.send(aggs);
}, function (err) {
console.trace(err.message);
response.send(err.message);
});
我想这可能是一个愚蠢的语法错误。但是,elasticsearch的例子很少,我发现没有一个同时使用正则表达式过滤器和setlowercase\u expanded\u terms
Elasticsearch版本2.3查询中的正则表达式
T*
与示例中的值T2-R3
*
是“匹配前面的令牌0次或多次”的运算符,因此它将只匹配land
字段仅包含T的文档
希望这是唯一的问题肯定应该阅读原始问题中的
T.*
。但事实证明我的问题更复杂。将更新问题