Elasticsearch 常用查询和Http请求笔记

标签:

本文出自jvm123.com-java技术分享站:http://jvm123.com/2019/10/elasticsearch-chang.html

创建索引:

PUT /es_test

查询索引

GET /es_test

删除索引

DELETE /es_test

_search 查询

GET /es_test/user/_search
GET /es_test/user/_search?q=name:yawn&age[10 TO 20]&sort=age:desc
GET /es_test/user/_search?q=name:yawn&from=0&size=3

_search DSL查询

GET /index/type/_search
{
  "query":{
    "term": {
        "name": "yawn"
     }
  }
}

// match支持分词查询
GET /index/type/_search
{
  "query":{
    "match": {
        "name": "yawn"
     }
  }
}

term与match的区别:

term不会对查询的关键词进行分词,而是进行精确匹配,match会先对关键词进行分词,再查询。

对查询词进行分词:

GET /_analyze
{
  "analyzer": "standard",
  "text": "奥迪a4l"
}

指定分词器:

GET /_analyze
{
  "analyzer": "ik_smart",
  "text": "奥迪a4l"
}

_mapping文档映射:

查询映射:

 GET /es_test/user/_mapping
 GET /es_test/_mapping
  • 动态映射:根据文档的字段,自动映射存储的类型,eg:数值型的会被映射为long;
  • 静态映射:事先定义好映射。

String类型分为text和keyword,其中text类型的字段可以进行分词查询,keyword类型的字段不会进行分词。

自定义文档映射(静态映射):

POST /es_test/_mapping/user
{
  "user": {
    "properties": {
      "name": {
         "type" : "string",
         "index" : "not_analyzed"
      },
      "age": {
         "type": "integer"
      },
      "des": {
         "type": "text",
         "analyzer": "ik_smart",
         "search_analyzer": "ik_smart",
      }
    }
  }
}

not_analyzed 表示该字段不会被分析,analyzer 表示需要使用的分词器。

ik分词器有两种分词模式:ik_max_word和ik_smart模式。

1、ik_max_word

会将文本做最细粒度的拆分,比如会将“中华人民共和国人民大会堂”拆分为“中华人民共和国、中华人民、中华、华人、人民共和国、人民、共和国、大会堂、大会、会堂等词语。

2、ik_smart

会做最粗粒度的拆分,比如会将“中华人民共和国人民大会堂”拆分为中华人民共和国、人民大会堂。

发表评论