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
  }
  }
}

          

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐