Homestead中简单使用Elasticsearch

Homestead 启用 Elasticsearch

  • 启动Elasticsearch
sudo systemctl restart elasticsearch.service
  • 中文分词插件
 sudo /usr/share/elasticsearch/bin/elasticsearch-plugin list
  • 关闭 Elasticsearch 开机启动
sudo systemctl disable elasticsearch.service

Elasticsearch 基础概念

  • 概念

Elasticsearch 是一个分布式的搜索和分析引擎,可以用于全文检索、结构化检索和分析,并能将这三者结合起来。Elasticsearch 基于 Lucene 开发,是 Lucene 的封装,提供了 REST API 的操作接口,开箱即用。现在是使用最广的开源搜索引擎之一,Wikipedia、Stack Overflow、GitHub 等都基于 Elasticsearch 来构建他们的搜索引擎。

  • 概念互通
Mysql Elasticsearch
数据库(Database) 索引(Index)
表(Table) 类型(Type)
记录(Row) 文档(Document)
字段(Column) 字段(Fields)
  • 基础操作

    • 创建索引

      curl -XPUT http://localhost:9200/test_index
      
    • 查看索引

      curl http://localhost:9200/test_index
      
    • 格式化

      curl http://localhost:9200/test_index?pretty
      
    • 创建类型(mysql中创建一个表)

      curl -H'Content-Type: application/json' -XPUT http://localhost:9200/test_index/_mapping/_doc?pretty -d'{"properties": {"title": { "type": "text", "analyzer": "ik_smart" }, "description": { "type": "text", "analyzer": "ik_smart" },"price": { "type": "scaled_float", "scaling_factor": 100 }}}'
      

      解析:

      • URL 中 _doc 即为类型名称;
      • 提交数据中的 properties 代表这个类型中各个字段的定义,其中 key 为字段名称,value 是字段的类型定义;
      • type 定义了字段的数据类型,常用的有 text / integer / date / boolean,当然还有许多类型,不一一列出。
      • analyzer 是一个新的概念,这是告诉 Elasticsearch 应该用什么方式去给这个字段做分词
    • 创建文档(mysql中创建行)

      curl -H'Content-Type: application/json' -XPUT http://localhost:9200/test_index/_doc/1?pretty -d'{"title": "iPhone X","description": "iphoneX装X神器","price": 8848}'
       
       curl -H'Content-Type: application/json' -XPUT http://localhost:9200/test_index/_doc/2?pretty -d'{"title": "OPPO R15","description": "OPPO美颜神器","price": 2000}'
      
    • 读取文档数据

      curl http://localhost:9200/test_index/_doc/1?pretty
      
    • 简单搜索

      curl -XPOST -H'Content-Type:application/json' http://localhost:9200/test_index/_doc/_search?pretty -d'{"query" : { "match" : { "description" : "神器" }}}'
      
备案号:鲁ICP备17018368号-1