ElasticSearch 安装使用介绍

本贴最后更新于 2405 天前,其中的信息可能已经时移世异

安装

Elastic 需要 Java 8 环境。
安装完 Java,就可以跟着官方文档安装 Elastic。直接下载压缩包比较简单。

[root@localhost] wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.3.tar.gz
[root@localhost] tar -zxvf elasticsearch-6.2.3.tar.gz
[root@localhost] mv elasticsearch-6.2.3   /usr/local/es

接着,进入 es 的目录,运行下面的命令,启动 es。

[root@localhost] ./bin/elasticsearch

es 默认本地访问,正式环境可以改成内网。 为方便测试可以先改成 0.0.0.0 允许公网访问。

vi elasticsearch.yml
network.host: 0.0.0.0

错误解决

1.root 启动错误

can not run elasticsearch as root

问题原因:es 默认不允许 root 账号启动

解决方法:

方案一:在执行 elasticSearch 时加上参数-Des.insecure.allow.root=true,完整命令如下

./bin/elasticsearch -Des.insecure.allow.root=true

方案二:编辑 elasicsearch 文件,增加

ES_JAVA_OPTS="-Des.insecure.allow.root=true"

最好不要用 root 用户启动

2.用户权限错误

main ERROR Could not register mbeans java.security.AccessControlException: access denied ("javax.management.MBeanTrustPermission" "register")

步骤一: 可以看下 config 文件夹是否属于启动 es 的用户

步骤二: chown -R 775 config(给 config 文件夹读写权限)

步骤三: 检查启动命令,不要在 bin 文件夹内启动 es。已这样的路径运行 ./bin/elasticsearch

3.ulimit 错误

[1]: max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]

解决方法:修改 ulimit 打开文件数

4.进程数错误

[1]: max number of threads [2048] for user [es] is too low, increase to at least [4096]

解决方法:修改系统的打开进程数 vi /etc/security/limits.d/90-nproc.conf

5.SecComp 检查错误

[1]: system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk

问题原因:因为 Centos6 不支持 SecComp

解决方法:在 elasticsearch.yml 中配置 bootstrap.system_call_filter 为 false,注意要在 Memory 下面可以加在底部

使用

Elastic 就会在默认的 9200 端口运行。这时,打开另一个命令行窗口,请求该端口,会得到说明信息。

{

	"name": "qv81z4g",
	"cluster_name": "elasticsearch",
	"cluster_uuid": "oBS8HzHgRC6kcfs_Uh_Luw",
	"version": {
		"number": "6.2.3",
		"build_hash": "c59ff00",
		"build_date": "2018-03-13T10:06:29.741383Z",
		"build_snapshot": false,
		"lucene_version": "7.2.1",
		"minimum_wire_compatibility_version": "5.6.0",
		"minimum_index_compatibility_version": "5.0.0"
	},
	"tagline": "You Know, for Search"
}

索引创建

创建索引 articles _type:article 增加两个映射

title 关键字类型

create_time long 类型

curl -X PUT 'http://localhost:9200/articles/' -d '
{

	"mappings": {
		"article": {
			"properties": {
				"title": {
					"type": "keyword"
				},
				"create_time": {
					"type": "long"
				}
			}
		}
	}
}'

Response:

{
    "acknowledged": true,
    "shards_acknowledged": true,
    "index": "articles"
}

索引查询

curl http://localhost:9200/articles/

Response:

{
    "articles": {
        "aliases": {},
        "mappings": {
            "article": {
                "properties": {
                    "create_time": {
                        "type": "long"
                    },
                    "title": {
                        "type": "keyword"
                    }
                }
            }
        },
        "settings": {
            "index": {
                "creation_date": "1523172764380",
                "number_of_shards": "5",
                "number_of_replicas": "1",
                "uuid": "iiQlEh5ARhihKWn2NF-JcA",
                "version": {
                    "created": "6020399"
                },
                "provided_name": "articles"
            }
        }
    }
}

创建文档

curl -X PUT 'http://localhost:9200/articles/' -d '{"title":"画江湖之不良人?","create_time":1523173408}'

Response:

{
    "_index": "articles",
    "_type": "article",
    "_id": "1",
    "_version": 1,
    "result": "created",
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 0,
    "_primary_term": 1
}

单条查询

curl http://localhost:9200/articles/article/1

Response:

{
    "_index": "articles",
    "_type": "article",
    "_id": "1",
    "_version": 3,
    "found": true,
    "_source": {
        "title": "画江湖之不良人?",
        "create_time": 1523123408
    }
}

简单分页查询

size: 每页大小

from: 开始位置

curl http://localhost:9200/articles/article/_search?size=20&from=0

Response:

{
    "took": 2,
    "timed_out": false,
    "_shards": {
        "total": 5,
        "successful": 5,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": 1,
        "max_score": 1,
        "hits": [
            {
                "_index": "articles",
                "_type": "article",
                "_id": "1",
                "_score": 1,
                "_source": {
                    "title": "画江湖之不良人?",
                    "create_time": 1523173408
                }
            }
        ]
    }
}

简单精准匹配

curl -X POST 'localhost:9200/articles/article/_search' -d '
{
    "query": {
        "match": {
            "title": "画江湖之不良人?" 
        }
    }
}'

Response:

{
    "took": 3,
    "timed_out": false,
    "_shards": {
        "total": 5,
        "successful": 5,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": 1,
        "max_score": 0.2876821,
        "hits": [
            {
                "_index": "articles",
                "_type": "article",
                "_id": "1",
                "_score": 0.2876821,
                "_source": {
                    "title": "画江湖之不良人?",
                    "create_time": 1523173408
                }
            }
        ]
    }
}

通配符匹配

curl -X POST 'localhost:9200/articles/article/_search' -d '
{
    "query": {
        "wildcard": {
            "title": "*之*" 
        }
    }
}'

Response:

{
    "took": 6,
    "timed_out": false,
    "_shards": {
        "total": 5,
        "successful": 5,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": 1,
        "max_score": 1,
        "hits": [
            {
                "_index": "articles",
                "_type": "article",
                "_id": "1",
                "_score": 1,
                "_source": {
                    "title": "画江湖之不良人?",
                    "create_time": 1523173408
                }
            }
        ]
    }
}

简单字段排序

curl -X POST 'localhost:9200/articles/article/_search' -d '
{
    "sort": { "create_time": { "order": "desc" }}
}'

Response:

{
    "took": 3,
    "timed_out": false,
    "_shards": {
        "total": 5,
        "successful": 5,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": 3,
        "max_score": null,
        "hits": [
            {
                "_index": "articles",
                "_type": "article",
                "_id": "3",
                "_score": null,
                "_source": {
                    "title": "画江湖之不良人3?",
                    "create_time": 1523175608
                },
                "sort": [
                    1523175608
                ]
            },
            {
                "_index": "articles",
                "_type": "article",
                "_id": "2",
                "_score": null,
                "_source": {
                    "title": "画江湖之不良人2?",
                    "create_time": 1523173608
                },
                "sort": [
                    1523173608
                ]
            },
            {
                "_index": "articles",
                "_type": "article",
                "_id": "1",
                "_score": null,
                "_source": {
                    "title": "画江湖之不良人?",
                    "create_time": 1523173408
                },
                "sort": [
                    1523173408
                ]
            }
        ]
    }
}

官方文档

es 十分强大更多功能请查看官方文档介绍。
https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html

中文分词

可以安装 ik 插件
https://github.com/medcl/elasticsearch-analysis-ik

按步骤安装即可

  • Elasticsearch

    Elasticsearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

    117 引用 • 99 回帖 • 212 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...