先插入四条数据
PUT /esstudy/user/1 { "name": "张三", "age": 21 } PUT /esstudy/user/2 { "name": "李四", "age": 22 } PUT /esstudy/user/3 { "name": "王五", "age": 23 } PUT /esstudy/user/4 { "name": "赵六", "age": 24 }
看一下数据:
如果说数据存在那么便是覆盖(全量覆盖)
PUT /esstudy/user/1 { "name": "法外狂徒张三", "age": 21, "desc": "法律大牛" }
再执行
GET /esstudy/user/1
PUT /esstudy/user/2 { "name": "李四" }
POST /esstudy/user/3/_update { "doc":{ "name": "王五升级", "age": 23 } }
DELETE /xxx
GET /xxx
GET esstudy/user/_search?q=name:赵六
GET esstudy/user/_search { "query": { "match_all": {} } }
再插入一条数据
PUT /esstudy/user/5 { "name": "张三", "age": 21 }
再进行查询
GET esstudy/user/_search { "query": { "match": { "name": "法外狂徒张三" } } }
通过分数来查看谁更加符合结果
GET esstudy/user/_search { "query": { "match": { "name": "张三" } }, "_source": ["name"] }
根据年龄倒序
GET esstudy/user/_search { "query": { "match_all": {} }, "sort": [ { "age": { "order": "desc" } } ] }
GET esstudy/user/_search { "query": { "match_all": {} }, "sort": [ { "age": { "order": "desc" } } ], "from": 0, "size": 2 }
1. must
都要符合
例如。查询名字是张三,年龄是21的
GET esstudy/user/_search { "query": { "bool": { "must": [ { "match": { "name": "张三" } }, { "match": { "age": 21 } } ] } } }
2. should
只要满足一个即可
GET esstudy/user/_search { "query": { "bool": { "should": [ { "match": { "name": "张三" } }, { "match": { "age": 22 } } ] } } }
3. must_not
查询不满足条件的,即过滤操作
GET esstudy/user/_search { "query": { "bool": { "must_not": [ { "match": { "name": "张三" } }, { "match": { "age": 22 } } ] } } }
4. filter
GET esstudy/user/_search { "query": { "bool": { "must": [ { "match": { "name": "张三" } } ], "filter": { "range": { "age": { "gte": 20, "lte": 40 } } } } } }
关于分词:
创建规则
PUT testdb { "mappings": { "properties": { "name": { "type": "text" }, "desc": { "type": "keyword" } } } }
插入数据:
PUT testdb/_doc/1 { "name": "法外狂徒1号", "desc": "法外狂徒1号decs" } PUT testdb/_doc/2 { "name": "法外狂徒2号", "desc": "法外狂徒2号decs" }
GET testdb/_search { "query": { "term": { "desc": "法外狂徒2号decs" } } }
可以看到结果只有一个
如果只查询法外狂徒那么一个都没有
GET testdb/_search { "query": { "term": { "desc": "法外狂徒" } } }
精确查询多个值:
GET esstudy/user/_search { "query": { "bool": { "should": [ { "term": { "age": "22" } }, { "term": { "age": 21 } } ] } } }
GET esstudy/user/_search
{
"query": {
"match": {
"name": "张三"
}
},
"highlight": {
"fields": {
"name": {}
}
}
}
可以看到加上了em标签,当然我们也可以自定义。
GET esstudy/user/_search { "query": { "match": { "name": "张三" } }, "highlight": { "pre_tags": "<p class=‘key‘ style=‘color:red‘>", "post_tags": "</p>", "fields": { "name": {} } } }
原文:https://www.cnblogs.com/dmzna/p/14915325.html