ES 核心--结构化搜索 term filter 搜索数据

本文探讨了ES中的Term Filter/Query如何根据输入值进行精确搜索,并强调了对于数字、布尔和日期类型的天然支持。对于text类型的数据,需要设置为not_analyzed(或新版本的keyword类型)才能使用Term Query。文中通过创建测试数据和使用案例说明了如何操作,并提供了针对超过256个字符的text类型数据的搜索建议:使用keyword或重建索引避免标准分词器。
摘要由CSDN通过智能技术生成

结论: 

1、term filter/query :  根据输入值进行搜索(输入什么搜索什么),对数字、布尔、日期天然支持

2、text 类型需要在建索引时指定为not_analyzed (新版本用keyword就行),才能用 term query

3、相当于SQL中的单个where条件

1、创建测试数据

POST /forum/article/_bulk
{"index" : {"_id":1}}
{"articleId":"XHEX-A-3412-#f234","userId":1,"hidden":false,"postDate":"2021-07-11"}
{"index" : {"_id":2}}
{"articleId":"XHEX-A-3422-#f234","userId":2,"hidden":false,"postDate":"2021-07-02"}
{"index" : {"_id":3}}
{"articleId":"XHEX-A-3432-#f234","userId":3,"hidden":true,"postDate":"2021-07-20"}
{"index" : {"_id":4}}
{"articleId":"XHEX-A-3442-#f234","userId":4,"hidden":false,"postDate":"2021-07-01"}
{"index" : {"_id":5}}
{"articleId":"XHEX-A-3412-#f234","userId":5,"hidden":false,"postDate":"2021-06-11"}

2、使用案例

1、根据用户id查询
GET /forum/article/_search
{
  "query" : {
    "constant_score": {
      "filter": {
        "term": {
          "userId": "1"
        }
      }
    }
  }
}

结果:
{
  "took" : 23,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 1,
    "max_score" : 1.0,
    "hits" : [
      {
        "_index" : "forum",
        "_type" : "article",
        "_id" : "1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值