Elasticsearch是非关系型数据库,通过倒排索引进行查询数据的,极大的提高了查询效率;
Elasticsearch 查询分类大致分为全文查询、词项查询、复合查询、嵌套查询、位置查询、特殊查询。
python链接ES库,查询数据:
1、安装elasticsearch 库(pip install elasticsearch),安装完成后,连接语法,判断是否连接成功,有数据输出时,说明链接成功
from elasticsearch import Elasticsearch
# 建立连接
es = Elasticsearch(
hosts={'172.16.6.4'}, # 地址
timeout=3600 # 超时时间
)
print(es.search(index='yzj_dev_stl_bill_de2')) # index: 选择数据库
ES语法查询(DSL):
常用查询语法:
1、查询全部:match_all
2、模糊匹配: match (类似sql 的 like 语法)
3、全句匹配: match_phrase (类似sql 的 = 语法)
4、多字段匹配:muti_match (多属性查询)
5、语法查询:query_string (直接写需要配置的 关键字 )
6、字段查询 :query - term ( 不会进行分词)
7、范围查询:range () (lt大于,gt小于)
1)、match_all:匹配所有,查询全部数据;
GET yzj_dev_stl_bill_de2/_search
{
"query": {
"match_all": {}
}
}
2、match:bdName中包含“导线截面”
GET yzj_dev_stl_bill_de2/_search
{
"query": {
"match_all": {
"bdName" : "导线截面"
}
}
}
3、查询和过滤条件
1)bool 关键字, 可以组合多个查询条件;
①must:必须满足
子句(查询)必须出现在匹配的文档中,并将有助于得分。
②filter:过滤器,不计算相关度分数
子句(查询)必须出现在匹配的文档中。但是不像 must查询的分数将被忽略。
Filter子句在filter上下文中执行,这意味着计分被忽略,并且子句被考虑用于缓存。
③should:可能满足 or
子句(查询)应出现在匹配的文档中。
④must_not:必须不满足 不计算相关度分数
子句(查询)不得出现在匹配的文档中。子句在过滤器上下文中执行,这意味着计分被忽略
并且子句被视为用于缓存。由于忽略计分,0因此将返回所有文档的分数。
⑤minimum_should_match:should配合使用,满足几个should条件
⑥range:lt大于,gt小于
GET /yzj_dev_stl_bill_de2/_search
{
"query": {
"bool" : {
"must" : [
{
"term" : {
"kind" : {
"value" : "02",
"boost" : 1.0
}
}
},
{
"term" : {
"projectAttr.keyword" : {
"value" : "1.名称:潜水泵\n2.型号:50WQ/E12-30-3型\n3.规格:Q=12T/h,H=30M,N=3.0kw\n4.备注:含自耦装置、液位计及液位自动控制装置\n5.其他:详见设计图纸,符合相关规范及相关图集要求等\n6.说明:包含配套控制箱及电缆安装",
"boost" : 1.0
}
}
},
{
"term" : {
"bdCode" : {
"value" : "030109011",
"boost" : 1.0
}
}
}
],
"adjust_pure_negative" : true,
"boost" : 1.0
}
}
}
版权归原作者 失散人类 所有, 如有侵权,请联系我们删除。