ElasticSearch的DSL语句-分词器操作 大全

DSL操作ES-操作索引库

# 创建索引库
PUT test

# 查看索引库
GET test

# 删除索引库
DELETE test

# 关闭索引库
POST  test/_close

# 打开索引库
POST test/_open

GET test/_search   # 查询全部
GET test/_mapper   #查询映射数据

DSL操作ES-区分类型-操作映射

1)简单数据类型:

 text:可以分词,不支持聚合(统计)

keyword:不会分词,将全部内容作为一个词条,支持聚合(统计) name keyword

布尔(boolean)

二进制(binary)

范围类型(integer_range, float_range, long_range, double_range, date_range)

日期(date)

2)复杂数据类型

  • 数组 []:没有专用的array数据类型,任何一个字段的值,都可以被添加0个到多个,但要求他们的类型必须一致,当类型一直含有多个值存储到ES中会自动转化成数组类型 ["eric","jack"] List Set

  • 对象 {} Map User {key:value,key:value}

3)GEO: geo_point 地理位置坐标值

简单试水:

# 创建一个person的索引库,并且有映射
PUT person
{
  "mappings": {
    "properties": {
      "name":{
        "type": "text"
      },
      "age":{
        "type": "integer"
      }      
    }
  }
}

# 查看映射
GET person/_mapping

# 添加字段
PUT person/_mapping
{
  "properties":{
    "sex":{
      "type":"keyword"
    }
  }
}

添加文档,指定id 
POST person/_doc/1
{
  "name":"张三",
  "age":18,
  "sex":"男"
}

添加文档,不指定id
POST person/_doc
{
  "name":"翠花",
  "age":20,
  "sex":"女"
}

删除文档
DELETE person/_doc/1
# ==========文档的操作=============

# 指定id添加文档

POST person/_doc/1
{
  "name":"如花",
  "age": 18,
  "sex":"男"
}

# 不指定id添加文档
POST person/_doc/2
{
  "name":"翠花",
  "age": 19,
  "sex":"女"
}

# 查看所有文档
GET person/_search

# 根据id查看文档
GET person/_doc/rdJ9qYIB33sH7ezNb5Mu

# 修改文档
PUT person/_doc/rdJ9qYIB33sH7ezNb5Mu
{
  "name":"玫瑰花",
  "age":"20"
}

# 根据id删除文档
DELETE person/_doc/rdJ9qYIB33sH7ezNb5Mu

#注: 添加文档不指定id会自动生成一个id值

分词器

  • Standard Analyzer - 默认分词器,按词/字切分,小写处理 (英文)

  • Simple Analyzer - 按照非字母切分(符号被过滤),小写处理

  • Stop Analyzer - 小写处理,停用词过滤(the,a,is)

  • Whitespace Analyzer - 按照空格切分,不转小写

  • Keyword Analyzer - 不分词,直接将输入当作输出

  • Patter Analyzer - 正则表达式,默认\W+(非字符分割) (中文会被去掉)

  • Language - 提供了30多种常见语言的分词器

第三方ik 分词器

ik_smart:最小分词法

ik_max_word:最细分词法

Elasticsearch高级搜索:查询接口说明

查询所有:查询出所有数据,一般测试用。例如:match_all

全文检索(full text)查询:利用分词器对用户输入内容分词,然后去倒排索引库中匹配。例如:

  • multi_match_query

  • match_query

精确查询:根据精确词条值查找数据,一般是查找keyword、数值、日期、boolean等类型字段。例如:

  • ids
  • range
  • term

地理(geo)查询:根据经纬度查询。例如:

  • geo_distance
  • geo_bounding_box

复合(compound)查询:复合查询可以将上述各种查询条件组合起来,合并查询条件。例如:

  • bool
  • function_score

常见的全文检索查询包括:

match查询:单字段查询

multi_match查询:多字段查询,任意一个字段符合条件就算符合查询条件

match查询语法如下:

GET /indexName/_search
{
  "query": {
    "match": {
      "FIELD": "TEXT"
    }
  }
}

mulit_match语法如下:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值