1. 启动时指定集群和节点的名字
./elasticsearch -Ecluster.name=my_cluster_name -Enode.name=my_node_name
e.g. ./elasticsearch -d -Ecluster.name=shjCluster -Enode.name=shjNode1 # -d 表示后台启动
用 jps 可以查看是否有 Elasticsearch 的进程
这时,只能通过 localhost 访问 elasticsearch。需要修改下面的配置才能让其它的机器也能访问。
vim config/elasticsearch.yml
增加 network.host: 0.0.0.0
启动错误的话,可以先看: https://www.cnblogs.com/honeybee/p/6283623.html
访问: http://192.168.137.11:9200/?pretty 检查是否启动成功
批量导入数据:(在包含 accounts.json 的目录下执行下面的命令)
curl -H "Content-Type: application/json" -XPOST "localhost:9200/bank/_doc/_bulk?pretty&refresh" --data-binary "@accounts.json"
2. 使用 kibana 访问 ES:
修改 kibana.yml 文件中的 elasticsearch.url,指向 ES,本例中为: http://192.168.137.11:9200
访问 kibana http://localhost:5601
在 kibana 的 Dev Tools 中的 console 里输入 GET /_cat/health?v 检查集群的状态
一些命令:
(1) 创建一个document: PUT /indexName/typeName/id 示例:
PUT /ecommerce/product/1
{
"name" : "gaolujie yagao",
"desc" : "gaoxiao meibai",
"price" : 20,
"producer" : "gaolujie producer",
"tags": [ "meibai", "fangzhu" ]
}
(2) 查询: GET /index/type/id 示例:
GET /ecommerce/product/1
(3) 更新文档: POST /indexName/typeName/id/_update 示例:
POST /ecommerce/product/1/_update
{
"doc": {
"name": "jiaqiangban gaolujie yagao"
}
}
上面只会更新 name 这一个字段
(4) 删除文档: DELETE /indexName/typeName/id
(5) 查询 GET /ecommerce/product/_search
(a) 查询所有的商品
GET /ecommerce/product/_search
{
"query": { "match_all": {} }
}
(b) 查询名称包含yagao的商品,同时按照价格降序排序
GET /ecommerce/product/_search
{
"query" : {
"match" : {
"name" : "yagao"
}
},
"sort": [
{ "price": "desc" }
]
}
(c) 分页查询商品,
GET /ecommerce/product/_search
{
"query": { "match_all": {} },
"from": 1, # 从第几条(下标从0开始)开始查询
"size": 10 # 查询多少条记录
}
(d) 指定要查询出来商品的名称和价格就可以
GET /ecommerce/product/_search
{
"query": { "match_all": {} },
"_source": ["name", "price"]
}
(e) 搜索商品名称包含yagao,而且售价大于25元的商品
GET /ecommerce/product/_search
{
"query" : {
"bool" : {
"must" : {
"match" : {
"name" : "yagao"
}
},
"filter" : {
"range" : {
"price" : { "gt" : 25 }
}
}
}
}
}
(f) 全文检索
GET /ecommerce/product/_search
{
"query" : {
"match" : {
"producer" : "yagao producer"
}
}
}
注意: 会搜索出所有包含 "yagao" 和 "producer" 的记录。类似于数据库搜索中的 producer like '%yagao%' or producer like '%producer%'
(g) 短语检索
GET /ecommerce/product/_search
{
"query" : {
"match_phrase" : {
"producer" : "yagao producer"
}
}
}
注意: 类似于数据库搜索中的 producer like '%yagao producer%'
(h) 高亮搜索
GET /ecommerce/product/_search
{
"query" : {
"match" : {
"producer" : "yagao"
}
},
"highlight": {
"fields" : {
"producer" : {}
}
}
}