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字段的文档
希望这是唯一的问题
- ElasticSearch重新启动花费很长时间
- 请求包含无法识别的参数:在进行弹性search时请求获取build议
- 如何更新elasticsearch字段types
- 如何通过弹性search在expressjs中解决Not Found消息
- 如何为elasticsearch做create_or_update?
- Elasticsearch聚合部分string,而不是全部string
- 如何在elastic.js(elasticsearch)中计算具有相同值的字段?
- client.indices.putTemplate和client.putTemplate之间的区别
- ElasticSearch Nodejs Express自动化testing