以下命令都是基于elasticsearch-7.1.1
1、Create命令
1.1 创建索引
curl -XPUT 'localhost:9200/books?pretty'
其中localhost是es的ip地址,9200是端口,books是索引的名称,pretty是让返回的json以容易看懂的形式显示。
1.2 创建映射
curl -XPUT 'localhsot:9200/books/_mapping' -d ' { "properties": { "name": { "type": "text" }, "type": { "type": "text" }
} }'
books是映射名,_mapping是映射的端点,name和type都是属性名,type:text表示属性的类型是text类型。
2、Inser命令
2.1 插入文档
curl -XPUT 'localhost:9200/books/_doc/1' -d ' { "name": "ES从入门到放弃", "type": "ES" }'
_doc代表文档,1是文档名,json格式的是插入的数据。
3、Delete命令
3.1 删除索引
curl -XDELETE 'localhost:9200/books'
3.2 删除文档
curl -XDELETE 'localhost:9200/books/_doc/1'
其中1是文档的名称。
4、Update命令
4.1 更新文档
curl -XPOST 'localhost:9200/books/_update/1' -d ' { "doc": { "type": "Java" } }'
如果使用insert命令,是把整个文档改为"type":"Java",使用update是只把type这个字段改为Java,其他字段不受影响。
5、Query命令
5.1 查询范围
1、查询集群中的全部数据
curl 'localhost:9200/_search' curl 'localhost:9200/_all/_search'
其中_search是查询的端点,先不加入过滤条件、通配符这些,便于理解。
2、查询索引中的全部数据
curl 'localhost:9200/books,student/_search'
可以查询books和student这2个索引的数据。
3、查看一条数据的内容
curl 'localhost:9200/books/_doc/1' curl 'localhost:9200/books/_source/1'
第一条命令返回的是全部信息;第二条命令返回的是具体的数据信息。
5.2 查询模块
查询模块主要有query、size、from、_source、sort这几个。
1、size
返回文档的数量。
curl 'localhost:9200/_books/_search' -d ' { "size":2 }' curl 'localhost:9200/_books/_search?size=10'
根据默认排序返回前2个数据。
2、from
从第from开始返回数据。与size一起使用,可以用于分页,从0开始计数,from之前的结果也会计算,所以越到后面的翻页时间越长。
curl 'localhost:9200/_books/_search' -d ' { "size":2, "from":6 }' curl 'localhost:9200/_books/_search?from=3&size=10'
3、_source
字段如何返回。
curl 'localhost:9200/_books/_search' -d ' { "_source":["name","type"] }' curl 'localhost:9200/_books/_search' -d ' { "_source":{ "include":["name","type"] } }' curl 'localhost:9200/_books/_search' -d ' { "_source":{ "exclude":["name","type"] } }' curl 'localhost:9200/_books/_search?_source=name,type'
可以使用include表示需要返回的字段名,或者使用exclude表示不返回的字段名。
4、sort
5、query
query内容很多,这里只简单介绍下,下面再详细介绍。
curl 'localhost:9200/_books/_search' -d ' { "query":{ "match":{"name":"ES"} } }' curl 'localhost:9200/_books/_search?q=name:ES'
查找name字段存在ES的数据。
6、DSL过滤
6.1 match_all
用这个查询来匹配所有的数据。所以match_all不能添加过滤条件。
curl 'localhost:9200/books/_search' -d ' { "query":{ "match_all":{} } }'
6.2 match
标准查询,查找匹配的数据,会进行倒排索引分词的操作。不能查找多个字段。
curl 'localhost:9200/books/_search' -d ' { "query":{ "match":{"name":"AB"} } }'
可以将operator由默认的or改为and,需要同时满足才匹配成功。
curl 'localhost:9200/books/_search' -d ' { "query":{ "match":{ "name":{"query":"ES 入门 跑路","operator":"and"} } } }'
6.3 multi_match
使用multi_match可以匹配多个字段,跟match一样也可以把operator修改为and。
curl 'localhost:9200/books/_search' -d ' { "query":{ "multi_match":{ "query":"ES 入门", "fields":["name","type"] } } }'
fields里是需要搜索的字段名。
6.4 match_phrase
match_phrase用于精确匹配,不把条件分词。
curl 'localhost:9200/student/_search' -d ' {"query":{"match_phrase":{"name":"Allen Phyya"}}}'
只匹配Allen Phyya连在一起的数据,不匹配2个单词中有其他词语的数据。
6.5 bool
使用bool进行组合查询,must部分是必须要匹配的,should部分是可以部分匹配的,must_not部分是必须不匹配的。minimun_should_match是should最小的匹配数,如果没有设置,must不存在时默认为1,must存在时默认为0。
curl 'localhost:9200/books/_search' -d ' { "query":{ "bool":{ "must":[{"match":{"name":"入门"}}], "should":[{"match":{"name":"跑路"}},{"match":{"name":"删库"}}], "must_not":[{"match":{"type":"Java"}}], "minimum_should_match":1 } } }'
6.6 range
range查询用于范围查找,适用于数字和日期,甚至字符串。有4个参数:
1、gt:大于
2、gte:大于等于
3、lt:小于
4、lte:小于等于
curl 'localhost:9200/student/_search' -d '
{"query":
{"range":{"age":{"gt":"10","lt":"15"}}}}'
浙公网安备 33010602011771号