MENU

Elasticsearch入门

Elasticsearch提供了REST API操作接口,使用起来非常方便。由于elasticsearch安装在centos上且只配置了内网访问(elasticsearc最好不要暴露到外网),所有请求使用CURL完成;本文不涉及Elasticsearch集群内容。

基本概念

Elasticsearch中索引(index)类型(type)文档(document)等概念直接看可能比较蒙;和MySQL对照来看会容易理解:

ElasticsearchMySQL
IndexDatabase
TypeTable
DocumentRow
FieldColumn
MapppingSchema

Type会在以后版本中移除,详见:Indices, types, and parent / child: current status and upcoming changes in ElasticsearchIndex看作Table会比较恰当;每个索引最好只创建一个类型。

创建索引

创建索引名称为specs、类型为spec的索引;设置mapping(索引名字必须是小写)。

curl -X PUT 'localhost:9200/specs' -d '
{
  "mappings": {
    "spec": {
      "properties": {
        "name": {
          "type": "text",
          "analyzer": "ik_max_word",
          "search_analyzer": "ik_max_word"
        },
        "factory": {
          "type": "text",
          "analyzer": "ik_max_word",
          "search_analyzer": "ik_max_word"
        }
      }
    }
  }
}'

阅读全文

Centos7 安装配置 Elasticsearch

安装 Elasticsearch

确定是否已经安装JDK8(官方推荐使用JDK8,低版本建议升级)。

java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)

/etc/yum.repos.d/目录创建elasticsearch.repo文件;

[elasticsearch-5.x]
name=Elasticsearch repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

执行sudo yum install elasticsearch,一路按y。

执行systemctl enable elasticsearch设置开机启动。

执行systemctl start elasticsearch启动es。

执行curl http://localhost:9200验证是否启动成功。

{
  "name" : "DduW5um",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "GF0ljhIaSRGWz8QpMC1Ccw",
  "version" : {
    "number" : "5.6.2",
    "build_hash" : "57e20f3",
    "build_date" : "2017-09-23T13:16:45.703Z",
    "build_snapshot" : false,
    "lucene_version" : "6.6.1"
  },
  "tagline" : "You Know, for Search"
}

配置 Elasticsearch

默认情况下,Elasticsearch从/etc/elasticsearch/elasticsearch.yml文件加载其配置。

阅读全文

升到Mac OS High Sierra

今天上午把系统下载完,趁着午饭时间安装了更新;还算顺利吃饭回来发现升级好了。对于丐版Pro来说,硬盘不够用是个大问题,听说 High Sierra 的 APFS 文件系统能腾出点空间,升级完一看果然还是没啥变化;哎,已经用了3年多了,希望还能再战一年。

升级后问题也不少,发现QQ的兼容不太好,查看图片没有关闭按钮;去官网下载了个最新版,dmg文件又死活打不开;万幸JetBrains全家桶都还能正常使用。

感觉好多图标重画了,最主要的还是多了一张漂亮的壁纸。

image

String.valueOf(null)引出的两个问题

昨天有人在群里问了这么个问题:

System.out.println(String.valueOf(null));

会报空指针异常;而下面这样就可以打印null

Object obj = null;    
System.out.println(String.valueOf(obj));

debug代码会发现,两种方式执行了不同的重载方法,第一种执行了

public static String valueOf(char data[]) {
    return new String(data);
}

第二种执行了

public static String valueOf(Object obj) {
    return (obj == null) ? "null" : obj.toString();
}

如果对重载不熟悉,很难解释其中原因;当然null是另一个让人头疼的问。

重载

Java的重载解析过程是以两阶段运行的:

  • 第一阶段:选取所有可获得并且可应用的方法或构造器。

阅读全文

博客开启 https 和 gzip

进入阿里云控制台,“安全(云盾)”下的“证书服务”,点击购买证书,选择免费型 DV SSL;购买成功后补全信息,择系统生成 CSR以及DNS 验证方式,提交审核;稍等片刻审核通过,在订单列表中点击下载,选择下载nginx证书;将下载的文件上传至服务器;压缩文件包含.key和.pem文件,放到指定文件夹,例如/etc/nginx/conf.d/wangxs_cn_ss;。

打开nginx配置文件,将之前的listen 80;替换为以下配置:

listen                    443;
server_name               wangxs.cn;
ssl                       on;
ssl_certificate           /etc/nginx/conf.d/wangxs_cn_ssl/214244188290830.pem;
ssl_certificate_key       /etc/nginx/conf.d/wangxs_cn_ssl/214244188290830.key;
ssl_session_timeout       5m;
ssl_ciphers               ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols             TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;

并将之前的www跳转到non-www的配置修改为:

server {
    listen                    80;
    server_name               wangxs.cn www.wangxs.cn;
    return 301 https://wangxs.cn$request_uri;
}

阅读全文