elasticsearch基本操作二
阿新 • • 發佈:2018-12-10
1.資料準備
PUT data { "settings":{ "number_of_replicas":0, "number_of_shards":3 }, "mappings":{ "user": { "properties": { "name":{"type":"text"}, "address":{"type":"text"}, "age":{"type":"integer"}, "interests":{"type":"text"}, "birthday":{"type":"date"} } } } } PUT data/user/1 { "name":"jack", "address":"beijing", "age":23, "interests":"programing", "birthday":"2018-11-12" } PUT data/user/2 { "name":"tom", "address":"shanghai", "age":13, "interests":"programing fb bk", "birthday":"2018-03-15" } PUT data/user/3 { "name":"jack3", "address":"nanjing", "age":10, "interests":"fb lol", "birthday":"2018-08-25" }
2.term(s)查詢,適合keyword numeric date
GET data/user/_search
{
"query": {
"term": {
"name": "jack3"
}
}
}
GET data/user/_search
{
"query": {
"terms": {
"name": ["jack3","jack"]
}
}
}
注:其實就是查詢條件不分詞 直接走倒排索引查文件
3.match(multi_match)查詢
GET data/user/_search { "query": { "match": { "name": "jack jack3" } } } GET data/user/_search { "query": { "multi_match": { "query": "tom", "fields": ["name", "address"] } } } 注:查詢條件先分詞 再走倒排索引查文件
4.短語查詢,也是不分詞查詢
GET data/user/_search
{
"query": {
"match_phrase": {
"interests": "fb bk"
}
}
}
GET data/user/_search
{
"query": {
"match_phrase_prefix": {
"name": "jack"
}
}
}
*5.wildcard查詢(代表0個多個詞 ?代表任意一個詞)
GET data/user/_search { "query": { "wildcard": { "name": "jack?" } } } GET data/user/_search { "query": { "wildcard": { "name": "jack*" } } }
6.模糊查詢
GET data/user/_search
{
"query": {
"fuzzy": {
"name": "jagk"
}
}
}
注:這裡有點特表要注意下
7.高亮顯示查詢
GET data/user/_search
{
"query": {
"match": {
"name": "jack"
}
},
"highlight": {
"fields": {
"name":{}
}
}
}
8.範圍
# 日期
GET data/user/_search
{
"query": {
"range": {
"birthday": {
"from": "2018-03-15",
"to": "2018-11-12"
}
}
}
}
# 年齡
GET data/user/_search
{
"query": {
"range": {
"age": {
"from": 10,
"to": 23,
# 不包含 10
"include_lower": false,
# 不包含 23
"include_upper": false
}
}
}
}
9.排序(sort)
GET data/user/_search
{
"query": {
"match_all": {}
},
"sort": [
{
"age": {
"order": "asc"
}
}
]
}
10.分頁查詢
GET data/user/_search
{
"from": 0,
"size": 2,
"version": true,
"query": {
"match_all": {}
},
"sort": [
{
"age": {
"order": "desc"
}
}
]
}
11.指定查詢結果(_source)
GET data/user/_search
{
"query": {
"match_all": {}
},
"_source": ["name", "age"]
}
注:_source也可以用萬用字元
GET data/user/_search
{
"query": {
"match_all": {}
},
"_source": {
"includes": ["name", "a*"],
"excludes": ["age"]
}
}