微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

elasticsearch之查询的两种方式

前言

简单的没挑战,来点复杂的,比如查看来自顾家的都有哪些人怎么查呢?elasticsearch提供两种查询方式:

  • 查询字符串(query string),简单查询,就像是像传递URL参数一样去传递查询语句,被称为简单搜索查询字符串(query string)搜索
  • 另外一种是通过DSL语句来进行查询,被称为DSL查询(Query DSL),DSL是Elasticsearch提供的一种丰富且灵活的查询语言,该语言以json请求体的形式出现,通过restful请求与Elasticsearch进行交互。

准备数据

PUT zhifou/doc/1
{
  "name":顾老二",age30from": gudesc皮肤黑、武器长、性格直tags": [",]
}

PUT zhifou/doc/2大娘子18sheng肤白貌美,娇憨可爱":[3龙套偏房22mmp,没怎么看,不知道怎么形容造数据]
}


PUT zhifou/doc/4石头29粗中有细,狐假虎威5魏行首25广云台仿佛兮若轻云之蔽月,飘飘兮若流风之回雪,mmp,最后竟然没有嫁给顾老二!闭月羞花]
}

查询字符串

GET zhifou/doc/_search?q=from:gu

还是使用GET命令,通过_serarch查询查询条件是什么呢?条件是from属性gu家的人都有哪些。最后,别忘了_searchfrom属性间的英文分隔符?

结果如下:

{
  took" : timed_out" : false_shards : {
    totalsuccessfulskipped0Failed
  },1)">hitsmax_score0.6931472 : [
      {
        _indexzhifou_typedoc_id4_score_source : {
           : [
            
          ]
        }
      },{
        10.28768213
          ]
        }
      }
    ]
  }
}

我们来重点说下hitshits是返回的结果集——所有from属性gu的结果集。重点中的重点是_score得分,得分是什么呢?根据算法算出跟查询条件的匹配度,匹配度高得分就高。后面再说这个算法是怎么回事。

结构化查询

我们现在使用DSL方式,来完成刚才的查询,查看来自顾家的都有哪些人。

GET zhifou/doc/_search
{
  query: {
    match: {
      
    }
  }
}

上例,查询条件是一步步构建出来的,将查询条件添加match中即可,而match则是查询所有from字段的值中含有gu的结果就会返回。
当然结果没啥变化:


          ]
        }
      }
    ]
  }
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐