Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。本文主要对ES的安装配置与基本使用进行学习总结。
// 添加如下配置
-Xms340m
-Xmx340m
// 添加如下配置
http.cors.enabled: true
http.cors.allow-origin: "*"
network.host: 此处为本地ip
http://127.0.0.1:9200/
访问后可能提示 localhost 未发送任何数据。 ERR_EMPTY_RESPONSE
查看控制台报错:
received plaintext htp traffic on an https channel, closing connection Netty4HttpChannel
此报错原因在于是因为开启了 ssl 认证。解决
查看config\elasticsearch.yml
启动后增添了一些默认配置信息,需要将xpack.security.enabled,xpack.security.enrollment.enabled 修改为false,关闭ssl认证
curl ‐X<VERB> '<PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING>' ‐d '<BODY>'
// method
PUT
// url
http://ip:9200/indexName
// body
{
"mappings": {
"properties": {
"id": {
"type": "long",
"store": true,
"index": false
},
"title": {
"type": "text",
"store": true,
"index": true,
"analyzer": "standard"
},
"content": {
"type": "text",
"store": true,
"index": true,
"analyzer": "standard"
}
}
}
}
// method
DELETE
// url
http://ip:9200/indexName
// body
null
// method
PUT
// url
http://ip:9200/indexName/_doc
// body
// 文档内容
// method
PUT
// url
http://ip:9200/indexName/_doc/id
// body
// 文档内容
// GET获取所有详细信息,包括我们存储在ES中的字段数据和文档的元数据
// _doc表示默认返回所有信息
GET <index>/_doc/<_id>
// _source表示只返回字段数据
GET <index>/_source/<_id>
// HEAD 用于查询文档是否存在
// _doc表示默认返回所有信息
HEAD <index>/_doc/<_id>
// _source表示只返回字段数据
SOURCE <index>/_source/<_id>
// 不想查询_source部分内容
GET <index>/_doc/<_id>?_source=false
//_source_includes来设置查询显示哪些字段
GET <index>/_doc/<_id>?_source_includes=filed1,filed2...
GET <index>/_source/<_id>?_source_includes=filed1,filed2...
POST <index>/_search/
{
"query":{
"match_all": {}
}
}
// _source字段可以设置只显示部分字段
POST <index>/_search/
{
"query":{
"match_all": {}
},
"_source":["id", "title"]
}
// from和size参数设置显示哪一步分数据,实现类似于分页的功能
POST <index>/_search/
{
"query":{
"match_all": {}
},
"from":1,
"size":2
}
POST <index>/_search/
{
"query":{
"match": {
"title": {
"query":"ES",
"operator":"or"
}
}
}
// 词条查询是专用于精确匹配的一种查询
// 官方提醒,不要将词条匹配用于text类型的字段查询中
POST <index>/_search/
// 单词条查询 term
{
"query":{
"term":{
"id":12
}
}
}
// 多词条查询 terms
POST <index>/_search/
// 单词条查询
{
"query":{
"terms":{
"id":12
}
}
}
// 查询是指对数值型、日期等类型字段是否在或不在某个范围内进行查询,用于范围判断的标识包含以下几个
// gt: 大于/gte: 大于等于/lt:小于/lte:小于等于
POST <index>/_search/
// 单词条查询
{
"query":{
"range":{ #range关键字
"id":{ #字段
"gte":0, #范围设置
"lt":10 #范围设置
}
}
}
}
// 可进行多条件下过滤查询。布尔查询需要结合以下几个条件子句类使用
must:必须满足的条件(类似于SQL中的and)
should:可以满足也可以不满足的条件(类似于SQL中的or)
must_not:不需要满足的条件(类似于SQL中的not)
// 进一步的,可以在上述三个查询子句的基础上,配合filter子句对结果进一步过滤。filter子句的有点在于不对结果相关度进行评分,提高查询性能