1.索引操作
(1)创建索引(和type)
PUT http://yourIp:9200/索引名
body里写:
{
"setting":{
"index":{
"number_of_shards":2, -->分片数
"number_of_replicas":1 -->副本
}
},
"mappings":{
"userinfos":{ -->类型名
"properties":{
"userid":{ -->字段
"type":"text" -->字段类型
},
"username":{
"type":"text"
},
"birthday":{
"type":"date",
"format":"yyyy-MM-dd"
}
}
}
}
}
写完send发送即可。
(2)删除索引
DELETE http://yourIp:9200/索引名
(3)修改类型
POST http://IP:9200/索引名/类型名/_mapping
{
"userinfos":{
"properties":{
"age":{
"type":"integer"
}
}
}
}
2.添加数据
POST http://IP:9200/索引名/类型名[/id 不给就自动添加]
{
按照你设置的type格式输入 “字段名”:“数据”
}
3.删除数据
(1)按_id删除
DELETE http://IP:9200/索引名/类型名/ID
(2)按查询结果删除
POST http://IP:9200/索引名/类型名/_delete_by_query
{查询语法}
4.修改数据
(1)按照ID修改
POST http://IP:9200/索引名/类型名/ID/_update
{
"doc":{
"birthday":"1999-5-9"
}
}
5.查询数据
(1)按照ID查询
GET http://IP:9200/索引名/类型名/ID
(2)简单查询
GET http://IP:9200/索引名/类型名/_search
①普通模糊查询 (中文是每个字都是一个词,只要有a中任意一个字也会被查出来)
{
"query":{
"match":{
"username":"a"
}
}
}
②短语查询(要有和a一模一样的整词查询)
{
"query":{
"match_phrase":{
"username":"a"
}
}
}
③多列查询
{
"query":{
"multi_match":{
"query":"a",
"fields":["column1","column2"]
}
}
}
④分页查询
{
"query":{
"multi_match":{
"username":"a",
"fields":["column1","column2"]
}
},
"from":1,
"size":10
}
⑤分组/聚合查询
{
"aggs":{
"query_by_name":{ -->这里的名字随便自己取
"terms":{ (分组查询)
"field":"username"
}
}
}
}
{
"aggs":{
"query_by_name":{
"stats":{ (聚合计算,可以换成”avg”)
"field":"username"
}
}
}
}
⑥Query string查询[Java语法常用]
{
"query":{
"query_string":{
//”fields”:[“name”], -->可以加这一字段加快搜索也可以不加
"query":"张 OR 赵 OR 李" -->关键词可以是 AND(两个都必须有) NOT(没有什么) 也可以连着 “(NOT java) AND mysql”
}
}
}
⑦范围查询
{
"query":{
"range":{
"age":{
"gte":15, -->这里左闭右闭
"lte":20
}
}
}
}
(3)Filter查询
{
"query":{
"bool":{
"filter":{
"term":{
"birthday":"1999-9-9" (除了这个全部过滤)
}
}
}
}
}
(4)复合查询(should/must/must_not)
{
"query":{
"bool":{ -->如果里面有should有must 查询出的是先满足must条件的,在should条件;
如果里面有两个should 里面的条件是与,两个should是或。
"should":[ --->should 相当于 或 ;must 相当于 与 。
{
"match":{
"username":"张"
}
},
{
"match":{
"birthday":"1999-9-9"
}
}
]
}
}
}