elasticsearch 通过HTTP RESTful API 操作数据

1.检查es版本信息

http://IP:9200
curl 'IP:9200

 

2.查看集群是否健康

http://IP:9200/_cat/health?v
curl 'IP:9200/_cat/health?v'

3.查看节点列表

http://IP:9200/_cat/nodes?v
curl 'IP:9200/_cat/nodes?v'

4.列出所有索引及存储大小

http://IP:9200/_cat/indices?v
curl 'IP:9200/_cat/indices?v'

5.创建简单索引

 使用postman工具

curl -XPUT IP:9200/索引名称(小写)

6.创建复杂索引

curl -XPUT IP:9200/索引名称/ -d '{
    "settings":{
           "number_of_shards":1,     //设置分片数量
           "number_of_replicas":2,  //设置副本数量
           //自定义索引默认分析器
           "index":{
                  "analysis":{
                         "analyzer":{
                                "default":{
                                       "tokenizer":"standard",     //分词器
                                       "filter":[ //过滤器
                                              "asciifolding",
                                              "lowercase",
                                              "ourEnglishFilter"
                                       ]
                                }
                         },
                         "filter":{
                                "ourEnglishFilter":{
                                       "type":"kstem"
                                }
                         }
                  }
           }
    }
}'

7.分片设置

number_of_shards
每个索引的主分片数,默认值是 5 。这个配置在索引创建后不能修改。
number_of_replicas

每个主分片的副本数,默认值是 1 。对于活动的索引库,这个配置可以随时修改。例如,我们可以创建只有 一个主分片,没有副本的小索引:

PUT IP:9200/索引名称
{
    "settings": {
    "number_of_shards" :   1,
    "number_of_replicas" : 0
    }
}

更改副本数量:

PUT IP:9200/索引名称/_settings
{
    "number_of_replicas": 2
}

每次更改分片之后可以使用

GET IP:9200/索引名称/_search_shards 

来查询索引信息

8.创建mapping

首先查看刚刚创建的索引的mapping是什么样子的

htt://IP:9200/索引名称/_mapping

可见新建的索引中,mapping是一个空集,所以我们就要创建这个index的mapping

curl -POST IP:9200/索引名称/索引类型/_mapping?pretty -d '{
  索引类型: {
    "properties": {
      "title": {
        "type": "text",
        "store": "true"
      },
      "description": {
        "type": "text",
        "index": "false"
      },
      "price": {
        "type": "double"
      },
      "onSale": {
        "type": "boolean"
      },
      "type": {
        "type": "integer"
      },
      "createDate": {
        "type": "date"
      }
    }
  }
}'

9.插入数据

curl -POST IP:9200/索引名称/索引类型 -d '{
  "title": "test title 001",
  "description": "this is a random desc ",
  "price": 22.6,
  "onSale": "true",
  "type": 2,
  "createDate": "2018-01-12"
}'

 然后查询一下所有数据,默认为match_all

curl -GET IP:9200/索引名称/索引类型/_search

按ID进行查询

curl -GET IP:9200/索引名称/索引类型/ID

10.直接创建索引并插入文档

curl -PUT  IP:9200/索引名称/索引类型/文档ID -d '{
  "title": "test title 003",
  "description": "this is a random desc ",
  "price": 22.6,
  "onSale": "true",
  "type": 2,
  "createDate": "2018-01-12"
}'

11.轻量搜索

  • 检索全部
curl IP:9200/索引名称/_search?pretty

curl -XPOST localhost:9200/索引名称/_search?pretty -d "{\"query\": {\"match_all\": {} }}"

query:告诉我们定义查询 
match_all:运行简单类型查询指定索引中的所有文档

  • match_all & 只返回前两个文档
curl -XPOST IP:9200/索引名称/_search?pretty -d "{\"query\": {\"match_all\": {} }, \"size\" : 2}"

 如果不指定size,默认是返回10条文档信息

  • match_all & 返回第11到第20的10个文档信息 & 降序排序
curl -XPOST IP:9200/索引名称/_search?pretty -d "{\"query\": {\"match_all\": {} }, \"from\" : 10, \"size\" : 10,\"sort\" : {\"timestamp\" : {\"order\" : \"desc\" }}}"

from:指定文档索引从哪里开始,默认从0开始 
size:从from开始,返回多个文档 
sort:排序,排序字段与排序方式
这feature在实现分页查询很有用

  • 比如只返回title和description两个字段
curl -XPOST IP:9200/索引名称/_search?pretty -d "{\"query\": {\"match_all\": {} }, \"_source\": [\"title\", \"description\"]}"

  • 返回 name=student60
curl -XPOST IP:9200/索引名称/_search?pretty -d "{\"query\": {\"match\": {\"name\": \"student60\" } }}"

  • 返回 title=test
curl -XPOST IP:9200/索引名称/_search?pretty -d "{\"query\": {\"match\": {\"title\": \"test\" } }}"

  • 返回 title=005 or name=007
curl -XPOST IP:9200/索引名称/_search?pretty -d "{\"query\": {\"match\": {\"title\": \"005 007\" } }}"

  • 返回 短语匹配 title=title 007
curl -XPOST IP:9200/索引名称/_search?pretty -d "{\"query\": {\"match_phrase\": {\"title\": \"title 007\" } }}"

  • 布尔值(bool)查询 返回 title=title & title=007
curl -XPOST IP:9200/索引名称/_search?pretty -d "{\"query\": {\"bool\": {\"must\": [{\"match\": {\"title\": \"title\" }},{\"match\": {\"title\": \"007\" }}]}}}"

 must:要求所有条件都要满足(类似于&&)

  • 返回 title=007 or title=005
curl -XPOST IP:9200/索引名称/_search?pretty -d "{\"query\": {\"bool\": {\"should\": [{\"match\": {\"title\": \"007\" }},{\"match\": {\"title\": \"005\" }}]}}}"

should:任何一个满足就可以(类似于||)

  • 返回 不匹配title=007 & title=005
curl -XPOST IP:9200/索引名称/_search?pretty -d "{\"query\": {\"bool\": {\"must_not\": [{\"match\": {\"title\": \"007\" }},{\"match\": {\"title\": \"005\" }}]}}}"

must_not:所有条件都不能满足(类似于! (&&))

  • 返回 type=2 & title!=005
curl -XPOST IP:9200/索引名称/_search?pretty -d "{\"query\": {\"bool\": {\"must\": [{\"match\": {\"type\": 2 }}],\"must_not\": [{\"match\": {\"title\": \"005\" }}]}}}"

 

12. 配置分析器使用

不指定索引

指定索引及分析器

posted on 2018-07-25 15:23  疯狂的小萝卜头  阅读(337)  评论(0编辑  收藏  举报