最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python中的elasticsearch_dsl查詢語句轉(zhuǎn)換成es查詢語句詳解

 更新時(shí)間:2023年07月25日 09:50:39   作者:IT之一小佬  
這篇文章主要介紹了python中的elasticsearch_dsl查詢語句轉(zhuǎn)換成es查詢語句詳解,ElasticSearch在實(shí)際生產(chǎn)里通常和LogStash,Kibana,F(xiàn)ileBeat一起構(gòu)成Elastic?Stack來使用,它是這些組件里面最核心的一個(gè),需要的朋友可以參考下

elasticsearch_dsl查詢語句轉(zhuǎn)換成es語句

使用代碼運(yùn)行效果來演示轉(zhuǎn)換結(jié)果。

示例代碼1: 

from elasticsearch_dsl import connections, Search, Q
es = connections.create_connection(hosts=["192.168.104.49:9200"], timeout=20)
# print(es)
res = Search(using=es, index="test_index").query().query()  # 當(dāng)調(diào)用.query()方法多次時(shí),內(nèi)部會(huì)使用&操作符
print(res.to_dict())

運(yùn)行結(jié)果:

示例代碼2:

from elasticsearch_dsl import connections, Search, Q
es = connections.create_connection(hosts=["192.168.124.49:9200"], timeout=20)
# print(es)
q = ~Q("match", title="python")
res = Search(using=es, index="test_index").query(q)
print(res.to_dict())

運(yùn)行結(jié)果:

示例代碼3:

from elasticsearch_dsl import connections, Search, Q
es = connections.create_connection(hosts=["192.168.124.49:9200"], timeout=20)
# print(es)
q = Q('match', name='張') & Q("match", name="北")
res = Search(using=es, index="test_index").query(q)
print(res.to_dict())

運(yùn)行結(jié)果:

示例代碼4:

from elasticsearch_dsl import connections, Search, Q
es = connections.create_connection(hosts=["192.168.124.49:9200"], timeout=20)
# print(es)
q = Q("bool", must=[Q("match", address="山")], should=[Q("match", gender="男"), Q("match", emplyer="AAA")], minimum_should_match=1)
res = Search(using=es, index="test_index").query(q)
print(res.to_dict())

運(yùn)行結(jié)果:

示例代碼5:  【分頁】

from elasticsearch_dsl import connections, Search, Q
es = connections.create_connection(hosts=["192.168.124.49:9200"], timeout=20)
# print(es)
q = Q("bool", must=[Q("match", address="山")], should=[Q("match", gender="男"), Q("match", emplyer="AAA")], minimum_should_match=1)
res = Search(using=es, index="test_index").query(q)[2: 5]
print(res.to_dict())

運(yùn)行結(jié)果:

示例代碼6:   【聚合】

from elasticsearch_dsl import connections, Search, Q, A
es = connections.create_connection(hosts=["192.168.124.49:9200"], timeout=20)
# print(es)
q = Q("match", sex='男')
a = A("terms", field="gender")
res = Search(using=es, index="test_index").query(q)
res.aggs.bucket("gender_terms", a)
print(res.to_dict())

運(yùn)行結(jié)果:

示例代碼7:  【聚合】

from elasticsearch_dsl import connections, Search, Q, A
es = connections.create_connection(hosts=["192.168.124.49:9200"], timeout=20)
# print(es)
q = Q("match", sex='男')
res = Search(using=es, index="test_index").query(q)
res.aggs.bucket("per_gender", "terms", field="gender")
res.aggs["per_gender"].metric("sum_age", "sum", field="age")
res.aggs["per_gender"].bucket("terms_balance", "terms", field="balance")
res.aggs["per_gender"].bucket("terms_balance2", "terms", field="balance2")
print(res.to_dict())

運(yùn)行結(jié)果:

示例代碼8:  【聚合內(nèi)置排序】

from elasticsearch_dsl import connections, Search, Q, A
es = connections.create_connection(hosts=["192.168.124.49:9200"], timeout=20)
# print(es)
q = Q("match", sex='男')
res = Search(using=es, index="test_index").query(q)
res.aggs.bucket("agg_age", "terms", field="age", order={"_count": "desc"})
print(res.to_dict())

運(yùn)行結(jié)果:

示例代碼9:

from elasticsearch_dsl import connections, Search, Q, A
es = connections.create_connection(hosts=["192.168.124.49:9200"], timeout=20)
# print(es)
q = Q("match", sex='男')
res = Search(using=es, index="test_index").query(q)
res.aggs.bucket("agg_age", "terms", field="age", order={"_count": "asc"}).metric("avg_age", "avg", field="age")
print(res.to_dict())

運(yùn)行結(jié)果:

示例代碼10:  【_source字段】

from elasticsearch_dsl import connections, Search, Q, A
es = connections.create_connection(hosts=["192.168.124.49:9200"], timeout=20)
# print(es)
q = Q("match", sex='男')
res = Search(using=es, index="test_index").query(q).source(['account_number', 'address'])
print(res.to_dict())

運(yùn)行結(jié)果:

示例代碼11:

from elasticsearch_dsl import connections, Search, Q
# 連接es
es = connections.create_connection(hosts=["192.168.124.49:9200"], timeout=20)
# print(es)
s = Search(using=es, index="account_info")
# 方式一:
# 省份為北京
q1 = Q("match", province="北京")
# 25或30歲的男性信息
q2 = Q("bool", must=[Q("terms", age=[25, 30]), Q("term", gender="男")])
# and
q = q1 & q2
res = s.query(q)
print(res.to_dict())
# for data in res:
#     print(data.to_dict())
print("共查到%d條數(shù)據(jù)" % res.count())
print("*" * 100)
# 方式二
# 省份為北京
q1 = Q("match", province="北京")
# 25或30歲的信息
# q2 = Q("bool", must=[Q("terms", age=[25, 30]), Q("term", gender="男")])
q2 = Q("term", age=25) | Q("term", age=30)
# 男性
q3 = Q("term", gender="男")
res = s.query(q1).query(q2).query(q3)  # 多次query就是& ==> and 操作
print(res.to_dict())
# for data in res:
#     print(data.to_dict())
print("共查到%d條數(shù)據(jù)" % res.count())

運(yùn)行結(jié)果:

示例代碼12:

from elasticsearch_dsl import connections, Search, Q, A
# 連接es
es = connections.create_connection(hosts=["192.168.124.49:9200"], timeout=20)
# print(es)
s = Search(using=es, index="account_info")
s.query()
q = A("terms", field="age", size=100).metric("age_per_balance", "avg", field="balance")
s.aggs.bucket("res", q)
print(s.to_dict())

運(yùn)行結(jié)果:

示例代碼13:  【多次嵌套聚合】

from elasticsearch_dsl import connections, Search, Q, A
# 連接es
es = connections.create_connection(hosts=["192.168.124.49:9200"], timeout=20)
# print(es)
s = Search(using=es, index="account_info")
a1 = A("range", field="age", ranges={"from": 25, "to": 28})
a2 = A("terms", field="gender")
a3 = A("avg", field="balance")
s.aggs.bucket("res", a1).bucket("gender_group", a2).metric("balance_avg", a3)
print(s.to_dict())

運(yùn)行結(jié)果:

示例代碼14:  【使用pycharm打斷點(diǎn)查看查詢語句】

from elasticsearch_dsl import connections, Search, Q, A
# 連接es
es = connections.create_connection(hosts=["192.168.124.49:9200"], timeout=20)
# print(es)
s = Search(using=es, index="account_info")
a1 = A("range", field="age", ranges={"from": 25, "to": 28})
a2 = A("terms", field="gender")
a3 = A("avg", field="balance")
s.aggs.bucket("res", a1).bucket("gender_group", a2).metric("balance_avg", a3)
# print(s.to_dict())
# 執(zhí)行并拿到返回值
response = s.execute()
# res是bucket指定的名字
for data in response.aggregations.res:
    print(data.to_dict())

運(yùn)行結(jié)果:

注意:即使數(shù)據(jù)庫中沒有數(shù)據(jù),也可以打印出查詢語句!

到此這篇關(guān)于python中的elasticsearch_dsl查詢語句轉(zhuǎn)換成es查詢語句詳解的文章就介紹到這了,更多相關(guān)python的elasticsearch_dsl轉(zhuǎn)換es內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

祁东县| 潞城市| 德格县| 博兴县| 镇雄县| 乌海市| 龙州县| 安新县| 上思县| 察雅县| 南通市| 贞丰县| 修水县| 台中县| 明溪县| 泸定县| 灵武市| 宁津县| 柘城县| 启东市| 巴林左旗| 三穗县| 牟定县| 阜阳市| 瑞安市| 新沂市| 宣城市| 象州县| 黑河市| 仙居县| 皮山县| 家居| 平武县| 普安县| 禹城市| 隆子县| 临颍县| 新源县| 南阳市| 阿克陶县| 温泉县|