es ik 词库添加词语_Elasticsearch(2)使用Restful风格操作es索引库

本文介绍了如何使用Postman工具进行Elasticsearch的Restful接口操作,包括创建索引、配置mapping、添加文档、修改、删除和查询文档。特别讨论了标准分析器对关键词分词的影响及其在查询时的注意事项。

使用Postman工具进行Restful接口访问

ElasticSearch的接口语法

curl -X<VERB> '<PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING>' -d '<BODY>'

其中:

| 参数           | 解释                                       |
| -------------- | ---------------------------------------- |
| `VERB`         | 适当的 HTTP *方法* 或 *谓词* : `GET`、 `POST`、 `PUT`、 `HEAD` 或者 `DELETE`。 |
| `PROTOCOL`     | `http` 或者 `https`(如果你在 Elasticsearch 前面有一个 `https` 代理) |
| `HOST`         | Elasticsearch 集群中任意节点的主机名,或者用 `localhost` 代表本地机器上的节点。 |
| `PORT`         | 运行 Elasticsearch HTTP 服务的端口号,默认是 `9200` 。 |
| `PATH`         | API 的终端路径(例如 `_count` 将返回集群中文档数量)。Path 可能包含多个组件,例如:`_cluster/stats` 和 `_nodes/stats/jvm` 。 |
| `QUERY_STRING` | 任意可选的查询字符串参数 (例如 `?pretty` 将格式化地输出 JSON 返回值,使其更容易阅读) |
| `BODY`         | 一个 JSON 格式的请求体 (如果请求需要的话)                |

创建索引index和映射mapping

PUT	localhost:9200/blog1

请求体:

{
    "mappings": {
        "article": {
            "properties": {
                "id": {
                	"type": "long",
                    "store": true,
                    "index":"not_analyzed"
                },
                "title": {
                	"type": "text",
                    "store": true,
                    "index":"analyzed",
                    "analyzer":"standard"
                },
                "content": {
                	"type": "text",
                    "store": true,
                    "index":"analyzed",
                    "analyzer":"standard"
                }
            }
        }
    }
}

20d052b319a312ef3fb51205b0582b9b.png

这样我们就在es中定义好了一个索引库,并且配置了一个mapping

c5503b1b88e464e3272ed1f926604d47.png

给已创建的index添加mapping

使用 POST 命令,给 hello 这个type添加 mapping

POST    http://127.0.0.1:9200/blog/hello/_mappings

请求体为:

{
    "hello": {
        "properties": {
            "id": {
            	"type": "long",
                "store": true,
                "index":"not_analyzed"
            },
            "title": {
            	"type": "text",
                "store": true,
                "index":"analyzed",
                "analyzer":"standard"
            },
            "content": {
            	"type": "text",
                "store": true,
                "index":"analyzed",
                "analyzer":"standard"
            }
        }
    }
}

34bdb4eedb60b89d1389f7dbb804d2bb.png

这样我们就在es中为blog索引库配置了一个mapping

be9432d74cdfae912dbb1895e10bf602.png

在elasticsearch-head-master中也可以做相应PUT和POST操作

d352571d512f8dfb86f843f9d2993225.png

15b14cda1f2e24cb16fde9446afd6bd4.png

877be4c1fe26383cddbaaaf5f704cd93.png

删除索引index

DELETE localhost:9200/blog2

a8cd8cb3f492a34d96c0628f9d094fbf.png

添加文档

POST	localhost:9200/blog1/article/1

请全体

{
	"id":1,
	"title":"ElasticSearch是一个基于Lucene的搜索服务器",
	"content":"它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。"
}

7001316d891eece709f46a654c412e12.png

注意

路径中最后的1指定了生成的文档的真正的id,如果未设置,则es自动生成一个uuid,对文档的增删改查就是要用这个_id

请全体中的id是我们数据中的一个字段

25621570f9fa1c095901902b455e67e5.png

如果我们未指定_id,则自动生成

952ac19862921b5c92e4273163492721.png

2a79994805a4c53b01d4ba8768b41928.png

修改文档

POST	localhost:9200/blog1/article/1

请求体

{
	"id":1,
	"title":"【修改】ElasticSearch是一个基于Lucene的搜索服务器",
	"content":"【修改】它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。"
}

1f7e4e8e77f31755a3f2d229c433c657.png

ec9768ae1900e82c85a0ea7027b19d71.png

删除文档document

DELETE	localhost:9200/blog1/article/1

e5bf0ad8da8da1d7bcb82a4bef09d412.png

6c10eb1114e34bda4382496afabca301.png

查询文档

5524f6e47d5ff252c00936a693a1c4e4.png

根据id查询

GET	localhost:9200/blog1/article/1

5880c5eb89f1382a7fc725b6c2cd3ba4.png

term查询

POST	localhost:9200/blog1/article/_search

请全体

{
    "query": {
        "term": {
            "title": "为什么"
        }
    }
}

a48200feb0f93da7aebfc9fc82cd763a.png

因为分词的时候使用的是标准分析器,标准分析器是基于单个汉字进行分词的,因此关键词为多个汉字的词语进行查询的时候没有结果,如果使用单个汉字作为查询条件可以查到结果

adb67f3ec145d8e2df640823dff2f2d9.png

querystring查询

POST	localhost:9200/blog1/article/_search

请全体

{
	"query":{
		"query_string":{
			"default_field":"title",
			"query":"为什么"
		}
	}
}
 

会先根据字符串进行分词,将得到的所有关键词进行查询

aa43d4a8601592ac84b3cbdbbc21b7b0.png

标准分词器分词效果测试:

http://127.0.0.1:9200/_analyze?analyzer=standard&pretty=true&text=我是程序员

5e88f5afabd0c1418a0a883cf0642937.png

使用es-head进行查询

9d6659c6b835f4a18d1e0e341dadb1d3.png

a7a720348289cdf24f5f2d2d60548d0b.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值