elasticsearch基础用法
Posted 晚来秋
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了elasticsearch基础用法相关的知识,希望对你有一定的参考价值。
来自官网,版本为2.3
不能用root启动,新加一个用户,然后测试启动;
adduser elsearch
su elsearch
./elasticsearch
若没有错误表示成功;
正常使用肯定需要后台启动(可选指定集群名和节点名);
./elasticsearch -d
./elasticsearch --cluster.name my_cluster_name --node.name my_node_name -d
下面三个命令依次为,检查集群状况、检查节点状况、显示所有的索引(刚开始是没有索引的)
curl ‘localhost:9200/_cat/health?v‘ curl ‘localhost:9200/_cat/nodes?v‘ curl ‘localhost:9200/_cat/indices?v‘
创建一个索引 customer(可选,因为直接插入数据的时候若索引名不存在会自动创建);
在索引customer中插入一条 type=external, id=1 的数据并查询这条数据;
删除这条数据,最后删除索引customer;
curl -XPUT ‘localhost:9200/customer?pretty‘ curl -XPUT ‘localhost:9200/customer/external/1?pretty‘ -d ‘{"name": "John Doe"}‘ curl -XGET ‘localhost:9200/customer/external/1?pretty‘ curl -XDELETE ‘localhost:9200/customer/external/2?pretty‘ curl -XDELETE ‘localhost:9200/customer?pretty‘
可以重复执行插入数据的命令来替换整条数据;
插入数据时可以不指定id,这样会自动生成一个(注意这里是post);
curl -XPOST ‘localhost:9200/customer/external?pretty‘ -d ‘{"name": "Jane Doe"}‘
而修改某条数据则应该这样;
curl -XPOST ‘localhost:9200/customer/external/1/_update?pretty‘ -d ‘{"doc": { "name": "John Doe update" }}‘ curl -XPOST ‘localhost:9200/customer/external/1/_update?pretty‘ -d ‘{"doc": { "name": "John Doe update", "age": 20 }}‘
修改数据还可以用脚本script,需要另外开篇记录;
下面是批量插入和更新数据;
curl -XPOST ‘localhost:9200/customer/external/_bulk?pretty‘ -d ‘ {"index":{"_id":"1"}} {"name": "John Doe" } {"index":{"_id":"2"}} {"name": "Jane Doe" } ‘ curl -XPOST ‘localhost:9200/customer/external/_bulk?pretty‘ -d ‘ {"update":{"_id":"1"}} {"doc": { "name": "John Doe becomes Jane Doe" } } {"delete":{"_id":"2"}} ‘
导入文件中的数据,当前目录下有个accounts.json文件(要求格式为上述批量操作的格式,感觉不实用);
curl -XPOST ‘localhost:9200/bank/account/_bulk?pretty‘ --data-binary "@accounts.json"
两种查出所有数据的命令;
curl ‘localhost:9200/bank/_search?q=*&pretty‘ curl -XPOST ‘localhost:9200/bank/_search?pretty‘ -d ‘ { "query": { "match_all": {} } }‘
以上是关于elasticsearch基础用法的主要内容,如果未能解决你的问题,请参考以下文章
elasticsearch代码片段,及工具类SearchEsUtil.java
ElasticSearch学习问题记录——Invalid shift value in prefixCoded bytes (is encoded value really an INT?)(代码片段