#es查询相关
1 | aggs聚合中terms和cardinality的区别: |
–match–1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24query==match==query实现模糊查询 分词查询含有的会被找出(如下含有学校或者公司的会被找出)===自动分词或者自己设计
result_list = es.search(index=['patent_cn_v7'],
body={
"query": {
"match": {
'applicant_address_other': {
'query':'公司'
},
# 检索条件
},
# 'match':{
# 'app_text':'CN01316971'
# }
}
},
filter_path=[
'hits.hits._source.applicant_address_other',
'hits.hits._source.app_text',
'hits.hits._source.applicant_other'
],
# 数据量
size=10
)
result_list
–match_phrase1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21query==match_phase_query 必须符合全部分词才会被找出来添加slop可以放宽条件
result_list = es.search(index=['patent_cn_v7'],
body={
"query": {
"match_phrase": {
'applicant_address_other': {
'query':'山东学校',
'slop': 1
}, # 检索条件
}
}
},
filter_path=[
'hits.hits._source.applicant_address_other',
'hits.hits._source.app_text',
], # 数据量
)
result_list
–multi_match–1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20multi_match 多字段匹配其中一个满足即可========也是自动分词
result_list = es.search(index=['patent_cn_v7'],
body={
"query": {
"multi_match": {
'query':'山东电学校',
'fields':['applicant_address_other','applicant_other']
, # 检索条件
}
}
},
filter_path=[
'hits.hits._source.applicant_address_other',
'hits.hits._source.applicant_other',
'hits.hits._source.app_text',
], # 数据量
)
result_list
–term–1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16term表示完全匹配不会经过分词器
result_list = es.search(index=['patent_cn_v7'],
body={
"query": {
"term": {
'applicant_other.keyword':'山东省电力学校',
}
}
},
filter_path=[
'hits.hits._source.applicant_address_other',
'hits.hits._source.applicant_other',
'hits.hits._source.app_text',
], # 数据量
)
result_list
–terms–1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17terms多条件精准匹配
result_list = es.search(index=['patent_cn_v7'],
body={
"query": {
"terms": {
'applicant_other.keyword':['孙向柔','吕百顺'],
}
}
},
filter_path=[
'hits.hits._source.applicant_address_other',
'hits.hits._source.applicant_other',
'hits.hits._source.app_text',
],
size=1000# 数据量
)
result_list
–bool filter–1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22bool====filter双重过滤(相当于mysql中的where)
result_list = es.search(index=['patent_cn_v7'],
body={
"query": {'bool':{
'must':{"match": {
'applicant_other.keyword':'吕百顺'
}},
'filter':{
'match':{
'app_text':'CN89215264'
}
}
}}},
filter_path=['hits.hits._source.applicant_other']
)
result_list
–prefix–1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17prefix以什么指定开头
result_list = es.search(index=['patent_cn_v7'],
body={
"query": {
"prefix": {
'applicant_other.keyword':'三江瓦力',
}
}
},
filter_path=[
'hits.hits._source.applicant_address_other',
'hits.hits._source.applicant_other',
'hits.hits._source.app_text',
],
size=1000# 数据量
)
result_list
–regexp–1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17正则表达式检索
result_list = es.search(index=['patent_cn_v7'],
body={
"query": {
"regexp": {
'applicant_other.keyword':'C.*',
}
}
},
filter_path=[
'hits.hits._source.applicant_address_other',
'hits.hits._source.applicant_other',
'hits.hits._source.app_text',
],
size=4000# 数据量
)
result_list
–wildcard–1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17通配符查询(?和*)
result_list = es.search(index=['patent_cn_v7'],
body={
"query": {
"wildcard": {
'applicant_other.keyword':'CDT??有限公司',
}
}
},
filter_path=[
'hits.hits._source.applicant_address_other',
'hits.hits._source.applicant_other',
'hits.hits._source.app_text',
],
size=4000# 数据量
)
result_list
–聚合查询–(avg\sum\min\max\stats)1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16result_list = es.search(index=['patent_cn_v7'],
body={'size':0,
"query": {
"match_all": { }
}
,
'aggs':{
'agg_terms':{
'stats':{
'field':'country_id'
}
}
}
}
)
result_list
–聚合分组–1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17result_list = es.search(index=['patent_cn_v7'],
body={'size':0,
"query": {
"match": {'applicant_other':'CJ第一制糖株式会社' }
}
,
#分组
'aggs':{
'agg_terms':{
'terms':{
'field':'ipcr_text'
}
}
}
}
)
result_list
–聚合分组后计算–1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
result_list = es.search(index=['patent_cn_v7'],
body={'size':0,
"query": {
"match": {'applicant_other':'CJ第一制糖株式会社' }
}
,
#分组
'aggs':{
'agg_terms':{
'terms':{
'field':'ipcr_text'
},
'aggs':{
'avg_id':{
'stats':{
'field':'country_id'
}
}
}
}
}
}
)
result_list
—返回聚合分组后的某一组数据(post_filter)—1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20返回聚合分组后的某一组数据(post_filter)
result = es.search(index=['patent_cn_v71'],body={
'query':{
'match_all':{}
},
'aggs':{
'ipcr':{
'terms':{
'field': "applicant_type"
},
}
},
'post_filter':{
'term':{'applicant_type':'individual'}
}
},
filter_path=['hits.hits._source.app_text'])
result
—聚合嵌套-(注意写的位置)–1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23result = es.search(index=['patent_cn_v71'],body={
'query':{
'match_all':{}
},
'aggs':{
'ipcr':{
'terms':{
'field':'ipcr_text'
},
'aggs':{
'ipcrs':{
'terms':{
'field':'ipcr_text'
}
}
}
}
}
})
result
—聚合返回拼接字段聚合(script)—1
2
3
4
5
6
7
8
9
10
11
12
13
14
15result = es.search(index=['patent_cn_v71'],body={
'query':{
'match_all':{}
},
'aggs':{
'kl':{
'terms':{
'script':{
'inline':"doc['app_country'].value+' '+doc['app_date'].value+' '+doc['id'].value",
}, 'size':'1000'
}
}
}
})
result
–聚合结果排序–
1 | result = es.search(index=['patent_cn_v71'],body={ |
–对聚合结果排序顺序倒叙–
1 | result = es.search(index=['patent_us_v71'],body={'size':0, |
–nested嵌套查询–
1 | #例1 |
–复合查询bool–1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28result = es.search(index = ['patent_cn_v7'],
body={
'query':{
'bool':{
'must':[{
'term':{
'applicant_other.keyword':'孙长友'
}
}
],
'must_not':
{
'term':{
'app_text':'CN201320765434'
},
},
}
}
},
filter_path=[
'hits.hits._source.applicant_address_other',
'hits.hits._source.applicant_other',
'hits.hits._source.app_text',
],
size=10)
result
–切片式查询from size–1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28result = es.search(index = ['patent_cn_v7'],
body={
'query':{
'bool':{
'must':[{
'term':{
'applicant_other.keyword':'孙长友'
}
}
],
'must_not':
{
'term':{
'app_text':'CN201320765434'
},
},
}
}
},
filter_path=[
'hits.hits._source.applicant_address_other',
'hits.hits._source.applicant_other',
'hits.hits._source.app_text',
],
size=10)
result
–范围查询range–1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17result = es.search(index = ['patent_cn_v7'],body={
'query':{
'range':{
'id':{
'gte':1000,
'lte':10000
}
}
}
},
filter_path = [
'hits.hits._source.applicant_address_other',
'hits.hits._source.applicant_other',
'hits.hits._source.app_text',
'hits.hits._source.id',
],
)
–sort排序–1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17result= es.search(index=['patent_cn_v7'],
body={
'query':{
'match_all':{}
},
'sort':{
'app_text':{
'order':'asc'
}
}
},
filter_path=[
'hits.hits._source.applicant_address_other',
'hits.hits._source.applicant_other',
'hits.hits._source.app_text',
'hits.hits._source.id',
])
–keyword与text的区别是分词与不分词的区别
1 | result = es.search(index=['patent_cn_v71'],body={ |
–count–获取匹配到的数量
1 | result = es.count(index=['patent_cn_v7'], |
–es_scroll进行深度分页you表获取内容–
1 | # list1 = [] |
–是否存在某个字段exists–
1 | #方法1 |
–深度理解filter–
1 | result = es.search(index=['patent_cn_v71'], |
–案例一filter放在bool下的等级等同于must
1 | import time |
filter常与bool一起使用,等级同must(里面要加match\term之类的)
1 | result = es.search(index=['patent_cn_v71'], |
1 | 注意事项: |