安装和使用elasticsearch
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是第二流行的企业搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。 本文是它的一些安装和基本用法简介
机器 CentOS 6.5
先去elasticsearch 官网
https://www.elastic.co/
我下载的是1.6版
https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.6.0.tar.gz
下载好后 直接解压
tar -zxvf elasticsearch-1.6.0.tar.gz
启动:./bin/elasticsearch[args]
查看状态:http://{es-host}:9200| netstat –ano|grep 9300
这个时候 我们浏览器上应该就能看到 elasticsearch 的状态了
启动时 设置 集群 name 和节点 name
./elasticsearch --cluster.name my_cluster_name --node.name my_node_name
启动es
Cd/usr/local/elasticsearch-0.18.7/bin/service
./elasticsearch start ------后台运行
停止es
Cd/usr/local/elasticsearch-0.18.7/bin/service
/elasticsearch stop
(说明:可参考https://github.com/elasticsearch/elasticsearch-servicewrapper)
附:插件的主要命令
./elasticsearchconsole ------前台运行
./elasticsearch start ------后台运行
./elasticsearchinstall -------添加到系统自动启动
./elasticsearchremove -----取消随系统自动启动
elasticsearchservicewrapper安装
这个是对elasticsearch执行命令的包装服务,安装之后,方便elasticsearch的启动,停止等等操作。
(1)下载elasticsearchservicewrapper
git clone https://github.com/elasticsearch/elasticsearch-servicewrapper,然后将目录下的service目录拷贝至ES_HOME/bin目录下。
(2)简单配置jvm的内存
修改ES_HOME/bin/service/elasticsearch.conf,set.default.ES_HEAP_SIZE=1024,该值根据机器的配置可自定义。
(3)安装启动服务
执行命令:ES_HOME/bin/service/elasticsearch install
(4)启动/停止/重启服务
执行命令:ES_HOME/bin/service/elasticsearch start/stop/restart
安装 elasticsearch-head 插件
./bin/plugin -install mobz/elasticsearch-head
浏览器查看
http://localhost:9200/_plugin/head/
安装 elasticsearch-kopf 插件
bin/plugin -install lmenezes/elasticsearch-kopf
浏览器查看
http://localhost:9200/_plugin/kopf/
安装 ansj 中文分词插件
进入Elasticsearch目录运行如下命令
./bin/plugin -u http://maven.ansj.org/org/ansj/elasticsearch-analysis-ansj/1.x.1/elasticsearch-analysis-ansj-1.x.1-release.zip -i ansj
简单配置:
################################## ANSJ PLUG CONFIG ################################
index:
analysis:
analyzer:
index_ansj:
type: ansj_index
query_ansj:
type: ansj_query
index.analysis.analyzer.default.type: ansj_index
创建一个索引
PUT http://192.168.8.80:9200/customer?pretty
为索引插入一条记录
curl -XPUT 'localhost:9200/customer/external/1?pretty' -d '
{ "name": "John Doe" }
插入好后 读取当前索引内容
http://192.168.8.80:9200/customer/external/1?pretty#
删除一个索引
DELETE http://192.168.8.80:9200/customer?pretty
一些命令 下面是我一些学习笔记 很多代码是直接在官方文档复制出来的
官方文档地址 ES文档
查看集群是否健康
http://192.168.8.80:9200/_cat/health?v
curl 'localhost:9200/_cat/health?v'
查看节点列表
http://192.168.8.80:9200/_cat/nodes?v
curl 'localhost:9200/_cat/nodes?v'
列出所有索引
http://192.168.8.80:9200/_cat/indices?v
curl 'localhost:9200/_cat/indices?v'
创建索引 索引名customer 默认会有5个分片 1个索引
curl -XPUT 'localhost:9200/customer?pretty'
添加一个类型
curl -XPUT 'localhost:9200/customer/external/2?pretty' -d '
{
"gwyy": "John Doe"
}'
更新一个类型
curl -XPOST 'localhost:9200/customer/external/1/_update?pretty' -d '
{
"doc": { "name": "Jaffffne Doe" }
}'
删除一条记录
curl-XDELETE'localhost:9200/customer/external/2?pretty'
删除指定name的数据
curl -XDELETE 'localhost:9200/customer/external/_query?pretty' -d '
{
"query": { "match": { "name": "Jaffffne Doe" } }
}'
批量添加
curl -XPOST 'localhost:9200/customer/external/_bulk?pretty' -d '
{"index":{"_id":"1"}}
{"name": "John Doe" }
{"index":{"_id":"2"}}
{"name": "Jane Doe" }
'
批处理 更新 和 删除 删除没有对应的 doc 因为删除了 doucment就没了
curl -XPOST 'localhost:9200/customer/external/_bulk?pretty' -d '
{"update":{"_id":"1"}}
{"doc": { "name": "John Doe becomes Jane Doe" } }
{"delete":{"_id":"2"}}
'
如果批处理一个单独动作失败了 会继续执行下一个动作 然后所有的执行完后 会返回每条执行动作的状态
批量搜索接口
curl'localhost:9200/bank/_search?q=*&pretty'
结果格式
-
took
– 搜索用的毫秒 -
timed_out
– 搜索超时时间 -
_shards
– 搜索了多少个片段 成功搜索多少个 失败了多少个 -
hits
– 搜索的返回结果集 -
hits.total
– 结果的总数 -
hits.hits
– 实际搜索返回的数组 -
_score
andmax_score
- ignore these fields for now
另一种搜索方法
curl-XPOST'localhost:9200/bank/_search?pretty'-d'{ "query": { "match_all": {} }}'
一旦es搜索返回给你 该链接就断开了 es并不会想mysql之类的 一直维护一个连接
查询匹配所有 但是只查询一个
curl-XPOST'localhost:9200/bank/_search?pretty'-d'{ "query": { "match_all": {} }, "size": 1}'
注意 如果没有指定大小 默认返回10
从11位开始查询10个
curl-XPOST'localhost:9200/bank/_search?pretty'-d'{ "query": { "match_all": {} }, "from": 10, "size": 10}'
未指定from的话 默认是 0
查询所有 按照 balance 排序
curl-XPOST'localhost:9200/bank/_search?pretty'-d'{ "query": { "match_all": {} }, "sort": { "balance": { "order": "desc" } }}'
查询所有数据 但是只获取指定字段
curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
"query": { "match_all": {} },
"_source": ["account_number", "balance"],
"size": 1
}'
真正的条件查询来了
查询 account_method = 20
curl-XPOST'localhost:9200/bank/_search?pretty'-d'{ "query": { "match": { "account_number": 20 } }}'
查询地址里包含 mill的
curl-XPOST'localhost:9200/bank/_search?pretty'-d'{ "query": { "match": { "address": "mill" } }}'
布尔值查询 必须2个都满足
curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
"query": {
"bool": {
"must": [
{ "match": { "address": "mill" } },
{ "match": { "address": "lane" } }
]
}
}
}'
查询2个条件 只要有一个满足就返回
curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
"query": {
"bool": {
"should": [
{ "match": { "address": "mill" } },
{ "match": { "address": "lane" } }
]
}
}
}'
不包括下面2个搜索项的数据查询
curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
"query": {
"bool": {
"must_not": [
{ "match": { "address": "mill" } },
{ "match": { "address": "lane" } }
]
}
}
}'
多种状态一起查询
curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
"query": {
"bool": {
"must": [
{ "match": { "age": "40" } }
],
"must_not": [
{ "match": { "state": "ID" } }
]
}
}
}'
定义过滤器
curl-XPOST'localhost:9200/bank/_search?pretty'-d'{ "query": { "filtered": { "query": { "match_all": {} }, "filter": { "range": { "balance": { "gte": 20000, "lte": 30000 } } } } }}'
聚合
curl-XPOST'localhost:9200/bank/_search?pretty'-d'{ "size": 0, "aggs": { "group_by_state": { "terms": { "field": "state" } } }}'
elasticsearch格式索引:类型:id
curl-X<RESTVerb><Node>:<Port>/<Index>/<Type>/<ID>
更多推荐
所有评论(0)