• 云途科技成立于2010年 - 专注全球跨境电商服务器租赁托管!
  • 帮助中心

    您可以通过下方搜索框快速查找您想知道的问题

    mac elasticsearch 安装 使用

      in  unix      Tags: 

    目前elasticsearch的稳定最新版6.2.4,建议大家装6.2.3,因为中文分词只兼容到6.2.3。

    1,安装java1.8

    $ brew install java8
    $ java -version
    java version "1.8.0_112"
    Java(TM) SE Runtime Environment (build 1.8.0_112-b16)
    Java HotSpot(TM) 64-Bit Server VM (build 25.112-b16, mixed mode)
    

    2,修改elasticsearch.rb

    $ vim /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/elasticsearch.rb
    
    class Elasticsearch < Formula
       desc "Distributed search & analytics engine"
       homepage "https://www.elastic.co/products/elasticsearch"
    -  url "https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.2.tar.gz"
    -  sha256 "b26e3546784b39ce3eacc10411e68ada427c5764bcda3064e9bb284eca907983"
    +  url "https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.3.tar.gz"  //换成这个
    +  sha256 "01dd8dec5f0acf04336721e404bf4d075675a3acae9f2a9fdcdbb5ca11baca76"   //换成这个
    

    3,安装,启动elasticsearch

    # brew install elasticsearch
    # brew services start elasticsearch   //启动1
    # elasticsearch  //启动2

    上面二种启动方法,在调试阶段,选择启动2,es2.x与es6.x差别还是挺大的,最坑的地方是官方文档,还没有更新。例如:es6.x mapping中的type已没有string类型了,但是官方给的例子当中,还用的是string类型。

    4,创建与删除索引

    $ curl -XPUT "http://127.0.0.1:9200/tanktest?pretty" //创建
    {
     "acknowledged" : true,
     "shards_acknowledged" : true,
     "index" : "tanktest"
    }
    
    $ curl -XDELETE "http://127.0.0.1:9200/tanktest?pretty" //删除
    {
     "acknowledged" : true
    }

    这个根oracle的存储空间差不多,规定数据要存储到什么地方

    5,创建mapping

    ES的mapping非常类似于静态语言中的数据类型:声明一个变量为int类型的变量, 以后这个变量都只能存储int类型的数据。同样的, 一个number类型的mapping字段只能存储number类型的数据。

    同语言的数据类型相比,mapping还有一些其他的含义,mapping不仅告诉ES一个field中是什么类型的值, 它还告诉ES如何索引数据以及数据是否能被搜索到。

    当你的查询没有返回相应的数据, 你的mapping很有可能有问题。当你拿不准的时候, 直接检查你的mapping。

    一个mapping由一个或多个analyzer组成, 一个analyzer又由一个或多个filter组成的。当ES索引文档的时候,它把字段中的内容传递给相应的analyzer,analyzer再传递给各自的filters。

    filter的功能很容易理解:一个filter就是一个转换数据的方法, 输入一个字符串,这个方法返回另一个字符串,比如一个将字符串转为小写的方法就是一个filter很好的例子。

    一个analyzer由一组顺序排列的filter组成,执行分析的过程就是按顺序一个filter一个filter依次调用, ES存储和索引最后得到的结果。

    总结来说, mapping的作用就是执行一系列的指令将输入的数据转成可搜索的索引项。

    搞过数据库的人,对这个可能更好理解一点,你可以把它理解成数据库表。

    $ curl -XGET "http://127.0.0.1:9200/tanktest/_mapping?pretty"
    {
     "tanktest" : {
     "mappings" : { }  //没有
     }
    }
    
    //创建mapping
    $ curl -XPOST "http://127.0.0.1:9200/tanktest/test/_mapping?pretty" -H "Content-Type: application/json" -d '
    {
        "test": {
                "properties": {
                    "title": {
                        "type": "text",
                    },
                    "description": {
                        "type": "text"
                    }
                }
            }
      }
    '
    //查看mapping
    $ curl -XGET "http://127.0.0.1:9200/tanktest/_mapping?pretty"
    {
      "tanktest" : {
        "mappings" : {
          "test" : {
            "properties" : {
              "description" : {
                "type" : "text"
              },
              "title" : {
                "type" : "text"
              }
            }
          }
        }
      }
    }
    

    在用post的时候,要加上-H "Content-Type: application/json",不然会报以下错

    "error" : "Content-Type header [application/x-www-form-urlencoded] is not supported"

    在这里一定要注意,mapping定义的type是不允许修改,所以在设计的时候,一定要考虑清楚

    6,向索中插入数据

    $ curl -XPOST "http://127.0.0.1:9200/tanktest/test/?pretty" -H "Content-Type: application/json" -d '
    {
     "title" : "tank test",
     "description" : "asdfasdfasdfasdfasd asdfasdfasdf"
    }'
    
    $ curl -XPOST "http://127.0.0.1:9200/tanktest/test/?pretty" -H "Content-Type: application/json" -d '
    {
     "title" : "zhangying test",
     "description" : "asdfasdfasdfasdfasd asdfasdfasdf"
    }'

    插入二条数据

    7,检索

    $ curl -XPOST "http://127.0.0.1:9200/tanktest/test/_search?pretty"  -H "Content-Type: application/json"  -d '
    > {
    >     "query": {
    >         "match": {
    >             "title": "tank test"
    >         }
    >     }
    > }'
    {
      "took" : 98,
      "timed_out" : false,
      "_shards" : {
        "total" : 5,
        "successful" : 5,
        "skipped" : 0,
        "failed" : 0
      },
      "hits" : {
        "total" : 2,
        "max_score" : 0.5753642,
        "hits" : [
          {
            "_index" : "tanktest",
            "_type" : "test",
            "_id" : "npf7-2IBVvjz0l6Th54k",
            "_score" : 0.5753642,
            "_source" : {
              "title" : "tank test",
              "description" : "asdfasdfasdfasdfasd asdfasdfasdf"
            }
          },
          {
            "_index" : "tanktest",
            "_type" : "test",
            "_id" : "n5f7-2IBVvjz0l6TnJ5I",
            "_score" : 0.2876821,
            "_source" : {
              "title" : "zhangying test",
              "description" : "asdfasdfasdfasdfasd asdfasdfasdf"
            }
          }
        ]
      }
    }
    

     搜索tank test会出来二条数据,匹配度高的排在前面,后一条含有test,所以搜索出来了,用了默认的英文分词

    8,分词

    $ curl -XPOST  'http://localhost:9200/tanktest/_analyze?pretty=true' -H 'Content-Type: application/json' -d '{ "analyzer":"standard", "text":"tank test"}'
    {
      "tokens" : [
        {
          "token" : "tank",
          "start_offset" : 0,
          "end_offset" : 4,
          "type" : "",
          "position" : 0
        },
        {
          "token" : "test",
          "start_offset" : 5,
          "end_offset" : 9,
          "type" : "",
          "position" : 1
        }
      ]
    }
    

    tank test分成了tank和test



    • 外贸虚拟主机

      1GB硬盘

      2个独立站点

      1000M带宽

      不限制流量

      美国外贸专用虚拟主机,cPanel面板,每天远程备份.
      服务器配置:2*E5 32核,96GB 内存,4*2TB 硬盘 RAID10 阵列.

      ¥180/年

    • 美国/荷兰外贸VPS

      2核CPU

      1G内存

      30硬盘

      10M带宽

      美国/荷兰外贸云服务器,专注外贸服务器行业12年.
      服务器配置:2*E5 32核,96GB 内存,4*2TB 硬盘 RAID10 阵列.

      ¥99/月

    • 全球外贸服务器

      8核CPU

      32G内存

      1TB硬盘

      1000M带宽

      已部署数据中心:美国洛杉矶/亚特兰大、荷兰、加拿大、英国伦敦、德国、拉脱维亚、瑞典、爱沙尼亚
      自有机柜(全球九大数据中心),稳定在线率:99.9%

      ¥999/月 原价1380

    7*24小时 在线提交工单

    如果您的问题没有得到解决,推荐您在线提交工单,我们的客服人员会第一时间为您解决问题

    展开