以下命令都是基于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"}}}}'

 

posted on 2019-06-24 16:02  浮音  阅读(375)  评论(0)    收藏  举报