ElsticSearch-01-入门
ElasticSearch 基础部分
初识
中文参考文档:《Elasticsearch中文文档》 | Elasticsearch 技术论坛 (learnku.com)
目的:数据搜索服务
The Elasic Stack:ElasticSearch、Kibana、Beats和Logstash(也成为==ElK Stack==)
端口:9300 ElasticSearch集群间组件通讯端口
9200 浏览器访问端口
名词引入:
- 倒排索引:通过关键字,查询包含该关键字的 id
- 正向索引,通过 id 访问 对应内容
入门操作 - 索引、文档
索引操作:
允许使用 Get \ Put \ Delete \ Head
不能使用 Post
索引 类似与 数据库
索引:
创建索引 Put
http://localhost:9200/shopping
shopping 就是创建的索引
查询索引 Get
删除索引 Delete
查询所有索引
文档:
添加数据 Post
http://localhost:9200/shopping
body内容 :
1
2
3
4{
"title":"苹果",
"price":"5.99"
}返回随机生成的 id
添加数据指定 id – Post
http://localhost:9200/shopping/_doc/1001
返回 1001 id
查询文档数据 – Get
查询所数据 – Get
shopping/_search
修改数据 – Put 全量修改
http://localhost:9200/shopping/_doc/1001
1
2
3
4{
"title":"苹果",
"price":"5.99"
}部分修改 – Post
http://localhost:9200/shopping/_update/1001
1
2
3
4
5{
"doc": {
"title": "橙子"
}
}匹配查询 – Get
http://localhost:9200/shopping/_search
1
2
3
4
5
6
7{
"query": {
"match" : {
"title": "橙子"
}
}
}查询所有(方法2) – Get
http://localhost:9200/shopping/_search
1
2
3
4
5
6
7{
"query": {
"match_all" : {
}
}
}分页查询 - from size
1
2
3
4
5
6
7
8
9
10
11
12
13{
"query": {
"match_all" : {}
},
"from" : 0, //第几页
"size" : 2, //页大小
"_source" : ["title"], //过滤显示
"sort" : { //排序:那个字段,如何排序
"price" : {
"order" : "desc"
}
}
}多条件查询 - bool
全部成立使用:must
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18{
"query": { //操作
"bool": { //多条件查询标记???不理解点
"must": [ //全部成立,数组形式包裹多条件
{
"match": { //条件1
"title": "橙子"
}
},
{
"match": { //条件2
"price": 5.99
}
}
]
}
}
}满足其中一个:should,将 must 换成 should 即可
范围查询 - filter
1
2
3
4
5
6
7
8
9
10
11
12
13
14{
"query": {
"bool": {
"must": { "match_all": {}}, //源数据
"filter": { //过滤
"range": { //范围
"price": { //指定字段
"gt": 4 //条件
}
}
}
}
}
}全文检索/模糊匹配 - match
默认就是全文检索
1
2
3
4
5
6
7{
"query": {
"match": {
"title": "橙"
}
}
}完全匹配/精确匹配 - match_phrase
1
2
3
4
5
6
7{
"query": {
"match_phrase": {
"title": "橙子"
}
}
}结果高亮 - highlight
1
2
3
4
5
6
7
8
9
10
11
12{
"query": {
"match_phrase": {
"title": "橙子"
}
},
"highlight": {
"fields": {
"title": {} //需要高亮的属性
}
}
}聚合查询 - aggs
分组查询
1
2
3
4
5
6
7
8
9
10{
"aggs": { //聚合操作
"price_group": { //名称,随意起
"terms": { //分组
"field": "price" //分组字段
}
}
},
"size": 0 //不显示原始数据
}平均值
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21GET /bank/_search
{
"size": 0,
"aggs": {
"group_by_state": {
"terms": {
"field": "state.keyword",
"order": { //内嵌一个排序
"average_balance": "desc"
}
},
"aggs": {
"average_balance": {
"avg": {
"field": "balance"
}
}
}
}
}
}
映射关系
对字段添加详细配置,
- text 类型字段,可以被分词;keyword 类型字段,不可以被分词。即,模糊查询
1 | { |
问题总结
启动后无法访问 9200
原因,开启了SSl验证
解决,将
xpack.security.http.ssl
下的enabled
改为false
访问 9200 需要登录
原因,开启了密码登录
解决,因找不到账号密码,建议改为无需验证:
xpack.security.enabled
改为false