Elasticsearch-结构化搜索

目录

结构化数据

ES中的结构化搜索

 Demo

本节知识点回顾


结构化数据

  • 结构化搜索,是指对结构化数据的搜索

    • 日期,布尔类型和数字都是结构化的

  • 文本也可以是结构化的

    • 如彩色表可以有离散的颜色集合:红,绿,蓝

    • 一个博客可能贴了标签,例如:分布式和搜索

    • 电商网站上的商品都有UPCs(通过产品码)或其他的唯一标识,他们都需要遵守颜色的,结构化的格式

ES中的结构化搜索

  • 布尔,时间,日期和数字这类结构化的数据:有精确的格式,我们可以对这些格式进行逻辑操作.包括比较数字或者时间的范围,或判断两个值的大小

  • 结构化的文本可以做精确匹配或者部分匹配

    • Term查询/Prefix前缀查询

  • 结构化的结果只有是和否两个值

    • 根据场景需要,可以决定结构化搜索是否需要打分(转成filter)

 Demo

//结构化搜索,精确匹配
POST /products/_bulk
{"index":{"_id":1}}
{"price":10,"avaliable":true,"productID":"XHDK-A-1293-#fJ3","data":"2018-01-01"}
{"index":{"_id":2}}
{"price":20,"avaliable":true,"productID":"QWER-A-1293-#fJ3","data":"2019-01-01"}
{"index":{"_id":3}}
{"price":20,"avaliable":false,"productID":"ASDF-A-1293-#fJ3"}

  • boolean 

  • constant_score:filtering 

  • range 

 

 

  •  日期Range(用法同Range)

  • Exists

 //Exists:存在某一个字段的文档会被匹配上
POST products/_search
{
  "query": {
    "constant_score": {
      "filter": {
        "exists": {
          "field": "data"
        }
      }
    }
  }
}

  •  处理多值字段
    • 处理多值字段,term查询是包含,而不是等于
    • 精确匹配的解决方案:增加一个genre_count字段进行计数,会在组合bool query给出解决方案

POST /movies/_bulk
{"index":{"_id":1}}
{"title":"Father of the Bridge Part II","year":1995,"genre":"Comedy"}
{"index":{"_id":2}}
{"title":"Dava","year":1993,"genre":["Comedy","Romance"]}

本节知识点回顾

  • 结构化数据 && 结构化搜索

    • 如果不需要算分,可以通过Constant Score,将查询转为Filtering

  • 范围查询和Date Math

  • 使用Exist查询处理非空null值

  • 精确值&&多值字段的精确值查找

    • Term查询是包含,不是完全相等.针对多值字段查询要尤其注意

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值