前7篇 全部是入门篇,让大家可以了解到ES的最基础的东西。
ES的最大价值在于海量的搜索引擎查询场景。
所以从这章开始 我们开始接触 正式的DSL 查询,介绍常用的查询场景。
这些基本都是企业里面常用的东西
查询所有
暴力简单明了 查所有数据
GET /hotel/_search
{
"query": {
"match_all": {
}
}
}
全文检索
什么是全文检索呢?
简单理解就是从一个索引库全部的数据范围中根据条件查询数据,mysql中经常会遇到你某个sql写的很弱智 造成了全文检索 慢查询 然后被运维打一顿。
但是ES全文检索没问题,ES天生就擅长全文检索,在检索时会对用户输入进行分词。
注意一点 全文检索一般时查询 text 类型的字段。 因为test类型才会分词。我们在前几篇中定义mapping的时候,就考虑过 哪些字段适合text 哪些字段适合keyword。 多个字段还可以组合为 ‘all’
试一下:
GET /hotel/_search
{
"query": {
"match": {
"all": "四川"
}
}
}
看 全文检索的神奇! 他把所有带四川的都搜出来了
"hits" : {
"total" : {
"value" : 3,
"relation" : "eq"
},
"max_score" : 8.388254,
"hits" : [
{
"_index" : "hotel",
"_type" : "_doc",
"_id" : "60935",
"_score" : 8.388254,
"_source" : {
"address" : "四平路59号",
"brand" : "喜来登",
"business" : "四川北路商业区",