Elasticsearch的简易版及结构化查询语句

上一篇 << 下一篇 >>>Elasticsearch默认分词器对中文分词不友好


1.简易版查询

1.1根据ID查询

GET /myjarye/user/1

1.2查询所有

GET /myjarye/user/_search

1.3根据多个ID批量查询

GET /myjarye/user/_mget
{
  "ids":["1","2"]
  
}

1.4查询年龄为21岁

GET /myjarye/user/_search?q=age:21

1.5查询年龄30岁-60岁之间【注意:TO 一定要大写】

GET /myjarye/user/_search?q=age[30 TO 60]

1.6查询年龄30岁-60岁之间 并且年龄降序、从0条数据到第1条数据

GET /myjarye/user/_search?q=age[20 TO 60]&sort=age:desc&from=0&size=2

1.7查询年龄30岁-60岁之间 并且年龄降序、从0条数据到第1条数据,展示name和age字段

GET /myjarye/user/_search?q=age[30 TO 60]&sort=age:desc&from=0&size=1&_source=name,age

2.结构化查询(DSL)

2.1使用term精确匹配

GET /myjarye/user/_search
{
  "query": {
    "term": {
      "name": "xiaopeng"
    }
  }
}

2.2使用match分词匹配

GET /myjarye/user/_search
{
  "from": 0,
  "size": 2, 
  "query": {
    "match": {
        "car": "奥迪"
      }
  }
}

2.3使用filter查询区间,_source返回字段

GET /myjarye/user/_search
{
    "query": {
        "bool": {
            "must": [{
                "match_all": {}
            }],
            "filter": {
                "range": {
                    "age": {
                        "gt": 30,
                        "lte": 60
                    }
                }
            }
        }
    },
    "from": 0,
    "size": 10,
    "_source": ["name", "age"]
}

3.Term与Match区别

Term查询不会对字段进行分词查询,会采用精确匹配。
Match会根据该字段的分词器,进行分词查询。


推荐阅读:
<< << << << << << << <<<正向索引和倒排索引区别
<< << << << << << << << <<

你可能感兴趣的:(Elasticsearch的简易版及结构化查询语句)