• 104505

    文章

  • 803

    评论

  • 12

    友链

  • 最近新加了换肤功能,大家多来逛逛吧~~~~
  • 喜欢这个网站的朋友可以加一下QQ群,我们一起交流技术。

超实用企业级搜索引擎_Elasticsearch(二)基于RESTFul Api操作

撸了今年阿里、腾讯和美团的面试,我有一个重要发现.......>>

Elasticsearch(二)基于RESTFul Api操作

想要进行API操作,必须安装好Elasticsearch,如果没安装的,可以参考上篇去操作一波,再来学习API操作噢! 

Elasticsearch的 API,我们可以不用每个API语法啥的都背的滚瓜烂熟, 煌sir跟你说,真没必要,API, 我们做到了解语法格式,能知道别人操作的时候,这API的一些语法含义即可, 然后辅助我们去学对应Java API,只有基本了解了,再去接触Java API ,煌sir直说了,事半功倍, 话不多说,上货!!!!

 

一.基本概念(名词解释)

Elasticsearch也是基于Lucene的全文检索库,本质也是存储数据,很多概念与MySQL类似的。

索引(indices)

Databases 数据库

类型(type)

Table 数据表

文档(Document)

Row 行

字段(Field)

Columns 列

  • 索引(库):index 索引,相当于 database,用于管理所有的数据。
  • 类型:type类型,相当于 table。

 

 

 

二. 索引操作

运行操作,下方代码和实例:

例如:

 

1.创建索引

  • 语法1

PUT   索引名称

  • 语法2:

PUT   索引名称

{
参数
}

  • 实例

/*语法1:使用默认参数 */
PUT book

/*语法2:使用自定义参数 */
PUT book2
{
  "settings": {
    "number_of_shards": "4", /*分片数量*/
    "number_of_replicas": "1" /*副本数量*/
  }
}

 

 

2.查看索引

  • 语法

GET 索引库名称

  • 实例

GET book

 

 

3. 删除索引

  • 语法

DELETE 索引库

  • 实例

DELETE book

 

 

三.映射配置(类型)

1. 创建映射

  • 语法:
    • PUT 进行操作是,如果类型没有将创建一个,如果类型已经存在将进行更新。
  •  

PUT  索引/_mapping/类型
{
"properties" : {
          "属性名": {
              type : "test", //类型
           index : true, //是否索引,默认true,方便查询
            store : false, //是否存储,默认false,多留一个备份
            analyzer: "分词器" //ik_max_word 中文分词器
    },
      "属性名": {

       }
  }
 }

 

  • 实例

PUT  czxy/_mapping/book2
{
  "properties": {
    "title": {
      "type": "text",
      "analyzer": "ik_max_word"
    },
    "images": {
      "type": "keyword",
      "index": true
    },
    "price": {
     "type": "float"
    }
  }
}

 

 

2.查询映射

  • 语法

GET 索引库/_mapping

  • 实例

GET czxy/_mapping

 

 

三. 数据操作

1. 添加数据:无id

  • 语法:

POST  _index/_type
{
"属性":"值",
"属性2:"值2
}

 

  • 实例

POST czxy/book
{
  "title": "Java编程思想",
  "images": "1.jpg",
  "price": 58.3
}
czxy/book
{
  "title": "Java核心技术",
  "images": "2.jpg",
  "price": 99.9
}
czxy/book
{
  "title": "PHP编程思想",
  "images": "3.jpg",
  "price": 68.8
}

 

 

2. 添加或更新数据:有id

  • 语法:如果id存在将更新,如果不存在,将添加

PUT  _index/_type/id
{
"属性":"值",
"属性2:"值2
}

  • 实例

PUT czxy/book/b001
{
  "title": "女神养成记II",
  "images": "美女.jpg",
  "price": 88.88
}
 

PUT  czxy/book/b002
{
  "title": "坏蛋是怎么炼成的",
  "images": "gg图.jpg",
  "price": 66.66
}

 

 

3.删除数据

  • 语法:

DELETE _index/_type/id

  • 实例

DELETE czxy/book/b002

 

 

 

四.查询操作

1. 通过id查询

  • 语法1:通过id查询所有 (select * from book where id = ?)

GET  _index/_type/id

  • 语法2:通过id查询部分 ( select title,price from book where id = ?)

GET _index/_type/id?_source=字段,字段2

 

  • 实例

GET /czxy/book/b001

 

GET /czxy/book/b001?_source=title,price

 

 

2. 查询所有

  • 语法1:所有索引库,查询操作,查询所有

GET  _search
{
"query" : {
"match_all" : {

}
}
}

  • 语法2:指定索引库,查询操作,查询所有

GET /索引库/_search
{
"query" : {
"match_all" : {

}
}
}

  • 语法3:指定索引库,查询操作,查询部分列数据

GET /索引库/_search
{
"query" : {
"match_all" : {

}
},
"_source": ["字段","字段2",....]
}

 

  • 实例1:所有库

GET _search
{
  "query": {
    "match_all": {
      
    }
  }
}

  • 实例2:指定库

GET  /czxy/_search
{
  "query": {
    "match_all": {
      
    }
  }
}

  • 实例3:部分数据

GET czxy/_search
{
  "query": {
    "match_all": {
      
    }
  },
  "_source": ["title","price"]
}

 

 

3.关键字查询

  • 使用match 处理条件
  • 语法:

GET _index/_search
{
"query" : {
"match" : {
字段名: 值
}
}
}

  • 需求:查询title为 “Java编程思想”
    • title 类型 text,表示支持分词,只要与“Java编程思想”部分词相同,就可以查询出来

GET czxy/_search
{
  "query": {
    "match": {
      "title": "Java编程思想"
    }
  }
}

 

 

4. 复合查询:must (交集 and)

  • 语法:
    • 使用 bool 进行多条件拼凑
    • 采用 must 、must_not 进行数据过滤
      • must 确定留下的数据
      • must_not 确定不需要的数据

GET czxy/_search
{
  "query": {
    "bool": {
      "must": [
       {
       关键字查询
       }
      ]
    }
  }
}

  • 实例1:采用多条件进行查询,查询title为 “Java编程思想”

GET czxy/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "title": "Java编程思想"
          }
        }
      ]
    }
  }
}

  • 实例2:采用多条件进行查询,查询title为 “Java编程思想”,不含PHP
  • 采用多条件进行查询,查询title为 “Java编程思想”
    GET czxy/_search
    {
      "query": {
        "bool": {
          "must": [
            {
              "match": {
                "title": "Java编程思想"
              }
            }
          ],
          "must_not": [
            {
              "match": {
                "title": "PHP"
              }
            }
          ]
        }
      }
    }

 

 

5. 复合查询:should (并集 or)

  • 语法

GET czxy/_search
{
  "query": {
    "bool": {
      "should": [
       {
       关键字查询
       },
       ....
      ]
    }
  }
}

  • 需求:查询“PHP编程思想” ,以及 女神养成记 相关数据

GET czxy/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "match": {
            "title": "PHP编程思想"
          }
        },
        {
          "match": {
            "title": "女神养成记"
          }
        }
      ]
    }
  }
}

 

 

6. 精准查询:term

  • 语法
    • 注意:精准查询指定数据类型(数值、布尔、未分词字符串)

GET _index/_search
{
  "query": {
    "term" : {
     字段
    }
  }
}

  • 需求:查询价格为68.8 信息

GET czxy/_search
{
  "query": {
    "term": {
      "price": {
        "value": 68.8
      }
    }
  }
}

  • 结论
    • 如果数据未分词,且需要精准查询,使用term
    • 普通查询,对数据进行分词处理,使用match

 

7. 范围查询:range

  • 语法:

GET 索引库/_search
{
  "query": {
    "range": {
      "字段": {
        gt : "大于",
        lt : "小于",
        gte : "大于或等于",
        lte : "小于或等于"
      }
    }
  }
}

 

  • 需求:查询价格在60-90之间

GET czxy/_search
{
  "query": {
    "range": {
      "price": {
        "gte": 60,
        "lte": 90
      }
    }
  }
}

 

 

8. 排序: sort

  • 语法

GET czxy/_search
{
  "query": {
    "match_all": {
    }
  },
  "sort" : {
   "字段": {
   "order" : "排序" //asc 、desc
   }
  }
}

  • 需求:按照价格降序

GET czxy/_search
{
  "query": {
    "match_all": {}
  },
  "sort": [
    {
      "price": {
        "order": "desc"
      }
    }
  ]
}

 

9. 分类:from + size

GET czxy/_search
{
  "query": {
    "match_all": {
    }
  },
  "from" : 0, //开始索引号,从0开始的
  "size" : 2 //每页的个数
}

  • 实例

GET  czxy/_search
{
  "query": {
    "match_all": {}
  },
  "from": 3,
  "size": 2
  
}

 

 

总结:(作图不易,费好大功夫整个大图完整截出来,不管怎样, 干就完了!)

请给努力中的自己点个赞哦!

每天进步一点点`~~~~~


695856371Web网页设计师②群 | 喜欢本站的朋友可以收藏本站,或者加入我们大家一起来交流技术!

0条评论

Loading...


自定义皮肤 主体内容背景
打开支付宝扫码付款购买视频教程
遇到问题联系客服QQ:419400980
注册梁钟霖个人博客