安装Elasticsearch

版本为6.5.4

下载地址

安装Kibana

版本为6.5.4

下载地址

ElasticSearch破解x-pack 6.0+和更新许可证License

ElasticSearch破解x-pack 6.0+和更新许可证License

安装elasticsearch-head plugin

https://github.com/mobz/elasticsearch-head

Running with built in server

git clone git://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head
npm install
npm run start
open http://localhost:9100/

Running with docker

for Elasticsearch 5.x: docker run -p 9100:9100 mobz/elasticsearch-head:5
for Elasticsearch 2.x: docker run -p 9100:9100 mobz/elasticsearch-head:2
for Elasticsearch 1.x: docker run -p 9100:9100 mobz/elasticsearch-head:1
for fans of alpine there is mobz/elasticsearch-head:5-alpine
open http://localhost:9100/

elasticsearch 跨域设置

http.cors.enabled: true
http.cors.allow-origin: "*"

默认情况下Elasticsearch的RESTful服务只有本机才能访问,也就是说无法从主机访问虚拟机中的服务。为了方便调试,可以修改config/elasticsearch.yml文件,加入以下两行命令:

http.host: 0.0.0.0
transport.host: 127.0.0.1
echo >> ./elasticsearch.yml http.host: 0.0.0.0
echo >> ./elasticsearch.yml transport.host: 127.0.0.1

Linux安装配置

使用默认环境启动Elasticsearch时可能会出现一些错误,所以需要进行一些设置。准备好Elasticsearch所需要的Linux操作系统环境,根据需要增加打开文件和进程的数量及虚拟内存数量。
编辑limits.conf文件:

# vi /etc/security/limits.conf

添加如下内容:

* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096

增大进程数的限制。然后编辑CentOS操作系统中的配置文件90-nproc.conf:

# vi /etc/security/limits.d/90-nproc.conf

将如下内容:

* soft nproc 1024

修改为:

* soft nproc 2048

增加虚拟内存空间大小。修改配置文件sysctl.conf:

# vi /etc/sysctl.conf

添加下面配置:

vm.max_map_count=655360

然后执行命令:

sysctl -p

在Linux下不能以root用户启动Elasticsearch,所以需要先创建用户,这里创建一个名为ops的用户。

# adduser ops

设置密码:

# passwd ops

操作系统环境准备好之后,就可以安装Elasticsearch了。首先下载并解压缩安装包elasticsearch-5.6.2.tar.gz。

$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.1.tar.gz
$ tar -xvf elasticsearch-6.5.1.tar.gz

然后执行脚本启动服务进程:

# sh elasticsearch

中文分词器

修改elasticsearch.yml

index:
  analysis:
    analyzer:
      ik:
        alias: [news_analyzer_ik,ik_analyzer]
        type: org.elasticsearch.index.analysis.IkAnalyzerProvider

index.analysis.analyzer.default.type : "ik"

通过模板设置全局默认分词器

curl -XDELETE http://localhost:9200/_template/rtf


curl -XPUT http://localhost:9200/_template/rtf
-d'
{
  "template":   "*", 
  "mappings": {
    "_default_": {
      "dynamic_templates": [
        {
          "strings": { 
            "match_mapping_type": "string",
            "mapping": {
              "type": "text",
              "analyzer":"ik_max_word",
              "search_analyzer":"ik_smart",
              "fields": {
                "keyword": {
                  "type":  "keyword",
                  "ignore_above": 256
                }
              }
            }
          }
        }
      ]
    }
  }
}
'

上面的6.0会报Enabling [_all] is disabled in 6.0. As a replacement, you can use [copy_to] on mapping fields to create your own catch all field.

删除

"_all": {
  "enabled": true
},

使用

"time": {
    "type": "date",
    "copy_to": {"enabled": true},
    "format": "strict_date_optional_time||epoch_millis"
}

创建索引和mapping

PUT /index
{
  "settings": {
     "refresh_interval": "5s",
     "number_of_shards" :   1, // 一个主节点
     "number_of_replicas" : 0 // 0个副本,后面可以加
  },
  "mappings": {
    "_default_":{
      "_all": { "enabled":  false } // 关闭_all字段,因为我们只搜索title字段
    },
    "resource": {
      "dynamic": false, // 关闭“动态修改索引”
      "properties": {
        "title": {
          "type": "string",
          "index": "analyzed",
          "fields": {
            "cn": {
              "type": "string",
              "analyzer": "ik"
            },
            "en": {
              "type": "string",
              "analyzer": "english"
            }
          }
        }
      }
    }
  }
}
最后由 不一样的少年 编辑于2021年12月03日 16:36