ElasticSearch基础语法之进阶基础查询&field类型

目录

ES基础查询

1、充分理解倒排索引及token的概念

2、倒排索引的核心组成 

 3、存储并索引

4、 利用analyze api搜索

 建立索引

5、field类型


 

ES基础查询

1、充分理解倒排索引及token的概念

搜索引擎其实跟我们的使用图书很相似,下面我来对图书和搜索引擎进行一个简单的类比,来看一下搜素引擎中正排和倒排索引。

  • 图书
    • 正排索引-目录页
    • 倒排索引-索引页
  • 搜索引擎
    • 正排索引-文档 Id 到文档内容和单词的关联
    • 倒排索引-单词到文档 Id 的关系

2、倒排索引的核心组成 

 459306be507f0bc97b483c2248bf5365.png

 2592b30b2d9335f4094cb089041dfa89.png

倒排列表的元数据结构:

(DocID;TF;<POS>)

其中:

  • DocID:出现某单词的文档ID
  • TF(词频):单词在该文档中出现的次数
  • POS:单词在文档中的位置

则它们生成的倒排索引

9ba38006c60fa7a9946402a46f2b769c.png

 3、存储并索引

只有被analyze后生成的索引存储下来后才能被搜索到,单纯的存储不analyze的数据不能被搜索,但可以读取出来展示给用户 

4、 利用analyze api搜索

 建立索引

PUT /employee/_doc/1
{
    "name": "Eating an apple a day & keeps the doctor away", 
    "age": 30
}

然后搜索

GET /employee/_search
{
  "query":{
    "match": {"name":"eat"}
  }
}

没搜到后使用analyze api查看分析处理结果,可以看到没有分出eat,所以搜不到,改成用english分词器做

GET /employee/_analyze
{
  "field":"name",
  "text":"Eating an apple a day & keeps the doctor away"
}

重新创建索引

PUT /employee
{
    "settings" : {
      "number_of_shards" : 1,
      "number_of_replicas" : 1
   },
    "mappings" : {
            "properties" : {
                "name" : { "type" : "text","analyzer": "english"},
                "age" : {"type":"integer"}
            }
    }

在用analyze api,可以看到eat

GET /employee/_analyze
{
  "field":"name",
  "text":"Eating an apple a day & keeps the doctor away"
}

英文分析器的步骤

  1. 1.字符过滤 &过滤掉
  2. 2.字符处理 以空格和标点符号分割
  3. 3.分词过滤 变小写,去掉停用词(the),同义词,词干转化器
  4. 5、field类型

  5. 类型说明

    text

    被分析索引的字符串类型

    keyword

    不能被分析只能被精确匹配的字符串类型

    date

    日期时间类型 可以配合

    format一起使用({"type":"date","format":"yyyy-MM-dd"}

    数字类型:long,integer,short,double等

  6. boolean类型:true,false
    array类型:[“one”,“two”]等
    object类型:json嵌套{“property1”:“value1”,“property2”:“value2”}
    ip:ip类型
    geo_point:地理位置类型

  7. 地址定义

  8. {
      "mappings": {
        "_doc": {
          "properties": {
            "location": {
              "type": "geo_point"
            }
          }
        }
      }
    }

    建立索引

  9. "location": { 
        "lat": 41.12,
        "lon": -71.34
    }

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值