1 字段分词分析:
GET /store_info_data/_analyze
{
"field": "storeName",
"text":"20pilapala0"
}
2 精确查找,去除评分
GET /store_info_data/_search
{
"query": {
"constant_score": {
"filter": {
"term": {
"price": "30"
}
}
}
}
}
3 组合查询案例
SELECT product FROM products
WHERE (price = 20 OR productID = "XHDK-A-1293-#fJ3")
AND (price != 30)
GET /store_info_data/_search
{
"query": {
"bool": {
"must_not": [
{
"term": {
"price": 30
}
}
],
"should": [
{
"term": {
"price": 20
}
},
{
"match": {
"productID": "XHDK-A-1293-#fJ3"
}
}
]
}
}
}
SELECT document FROM products
WHERE productID = "KDKE-B-9947-#kL5"
OR ( productID = "JODL-X-1937-#pV7" AND price = 30 )
GET /store_info_data/_search
{
"query": {
"bool": {
"should": [
{
"match": {
"productID": "KDKE-B-9947-#kL5"
}
},
{
"bool": {
"must": [
{
"match": {
"productID": "JODL-X-1937-#pV7"
}
},
{
"term": {
"price": {
"value": "30"
}
}
}
]
}
}
]
}
}
}
4 范围查找
gt: > 大于(greater than)
lt: < 小于(less than)
gte: >= 大于或等于(greater than or equal to)
lte: <= 小于或等于(less than or equal to)
-
如果我们想查找时间戳在过去一小时内的所有文档:
"range" : {
"timestamp" : {
"gt" : "now-1h"
}
} -
日期计算还可以被应用到某个具体的时间,并非只能是一个像 now 这样的占位符。只要在某个日期后加上一个双管符号 (||) 并紧跟一个日期数学表达式就能做到:
-
早于 2014 年 1 月 1 日加 1 月(2014 年 2 月 1 日 零时)
"range" : {
"timestamp" : {
"gt" : "2014-01-01 00:00:00",
"lt" : "2014-01-01 00:00:00||+1M"
}
}
-
4 exists(存在) & must_not + exists(不存在)
-
exists 用法 判断数据不为null
GET store_info_data/_search
{
"query": {
"constant_score": {
"filter": {
"exists": {
"field": "author"
}
},
"boost": 1.2
}
}
} -
must_not + exists用法
GET store_info_data/_search
{
"query": {
"bool": {
"must_not": {
"exists": {
"field": "name"
}
}
}
}
}
5 新增数据
# POST
POST my-index-000001/_doc
{
"my_float": "2.0",
"my_integer": "3"
}
# PUT
PUT my-index-000001/_doc/2
{
"my_float": "2.0",
"my_integer": "3"
}