前言
简单的没挑战,来点复杂的,比如查看来自顾家的都有哪些人怎么查呢?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
家的人都有哪些。最后,别忘了_search
和from
属性中间的英文分隔符?
。
结果如下:
{ took" : timed_out" : false_shards : { totalsuccessfulskipped0Failed },1)">hitsmax_score0.6931472 : [ { _indexzhifou_typedoc_id4_score_source : { : [ ] } },{ 10.28768213 ] } } ] } }
我们来重点说下hits
,hits
是返回的结果集——所有from
属性为gu
的结果集。重点中的重点是_score
得分,得分是什么呢?根据算法算出跟查询条件的匹配度,匹配度高得分就高。后面再说这个算法是怎么回事。
结构化查询
我们现在使用DSL方式,来完成刚才的查询,查看来自顾家的都有哪些人。
GET zhifou/doc/_search { query: { match: { } } }
上例,查询条件是一步步构建出来的,将查询条件添加到match
中即可,而match
则是查询所有from
字段的值中含有gu
的结果就会返回。
当然结果没啥变化:
]
}
}
]
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。