Elasticsearch(ES)多条件过滤实现案例

要完成上述图片上的查询条件,也即需要同时符合多种过滤条件。

由于公司的服务器中安装的elasticsearch版本很老,升级不是很方便,所以是基于老版本,新版本相应的语句做一些改变也可以。

实现:(具体条件需要更改)(elasticsearch版本:2.3.2)

实现代码

潜在优化:

1. "should": [

                        {"match_phrase": {"termID": "00:23:A5:30:45:AD"}},
                        {"match_phrase": {"material_id": "1520"}},
                        {"match_phrase": {"material_id": "1521"}}

],

"minimum_should_match": 2,

这个匹配可能是比较耗时的,采用match_phrase主要是因为低版本string类型,且创建index时,没有设置为not_anlyzed。

改成not_anlyzed(新版本用keyword类型,index=true),用filter - terms也许效率会提升;

2. 按项目而不是日期来定义索引,这样搜索范围将会大大缩小;

3. 采用最新版本elasticsearch,采用painless语言。


补充:

version:6.3(改良优化后)的实现代码:

6.3实现代码


猜你喜欢

转载自blog.csdn.net/chunzhenzyd/article/details/80747117