Elasticsearch使用lowercase_expanded_terms的正则expression式filter语法

问题:

我想要执行一个匹配文本的查询,然后在某个字段上执行一个正则expression式filter。 对于我的生活,我不能找出一个正则expression式filter的正确语法。

(我正在使用node.js客户端来执行查询)


说明:

我的文件中index:'not_analyzed'被设置为index:'not_analyzed' 。 我已经validation了查询工作没有过滤条款。 我已经validation了在'T2-R3'模式下的陆地领域有项目。 我从阅读文档了解到,有必要在查询中包含lowercase_expanded_terms: false参数,因为正则expression式扩展的默认行为只是小写。

我的查询有什么问题:

 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); }); 

我期望这可能是一个愚蠢的语法错误。 但是有一些宝贵的弹性search的例子,而且我没有发现使用正则expression式filter和设置lowercase_expanded_terms

Elasticsearch版本2.3

查询中的正则expression式T*将与您的示例T2-R3中的值不匹配

*是“匹配前面的令牌0次或更多次”的操作符,所以它只会匹配那些只包含T字段的文档

希望这是唯一的问题