elasticsearch,Javascript,Node.js,elasticsearch" /> elasticsearch,Javascript,Node.js,elasticsearch" />

Javascript Elasticsearch正则表达式筛选器语法,带有小写\u扩展\u术语

Javascript Elasticsearch正则表达式筛选器语法,带有小写\u扩展\u术语,javascript,node.js,elasticsearch,Javascript,Node.js,elasticsearch,问题: 我想执行一个匹配文本的查询,然后对某个字段执行正则表达式过滤器。 就我个人而言,我无法找出正则表达式过滤器的正确语法。 (我正在使用node.js客户端执行查询) 说明: 我的文档中的land字段设置为索引:“未分析”。我已经验证了查询在没有filter子句的情况下是有效的。我已经核实了土地区域中有一些项目的模式,如'T2-R3'。通过阅读文档,我了解到有必要在查询中包含lowercase\u expanded\u terms:false参数,因为正则表达式扩展的默认行为只是小写 我的

问题:

我想执行一个匹配文本的查询,然后对某个字段执行正则表达式过滤器。 就我个人而言,我无法找出正则表达式过滤器的正确语法。

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


说明:

我的文档中的
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的例子很少,我发现没有一个同时使用正则表达式过滤器和set
lowercase\u expanded\u terms


Elasticsearch版本2.3

查询中的正则表达式
T*
与示例中的值
T2-R3

*
是“匹配前面的令牌0次或多次”的运算符,因此它将只匹配
land
字段仅包含T的文档


希望这是唯一的问题

肯定应该阅读原始问题中的
T.*
。但事实证明我的问题更复杂。将更新问题