ES 匹配多个搜索条件和精确查询

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: ES 匹配多个搜索条件和精确查询

匹配多个搜索条件

GET /weiyihe/user/_search
{
  "query":{
    "match": {
      "tags": "男"
    }
  }
}

网络异常,图片无法展示
|

网络异常,图片无法展示
|

多个条件直接用空格隔开,满足其中一个结果,就能被查出,这时候可以通过score进行基本判断

网络异常,图片无法展示
|

注意score,满足的条件越多.score越高权重越大

网络异常,图片无法展示
|

精确查询

term查询是直接通过倒排索引指定的词条进行精确的查找的 效率会更高

关于分词

 由于term是倒排索引,直接进行精确查询

match会使用分词器进行解析,先分析文档,然后在通过分析的文档进行查询

两个字符串类型

text和keyword

text可以被分词器解析

keyword由于不可分割,不可以被分词器解析

创建索引库手动指名字段类型

PUT testdb
{
  "mappings": {
    "properties": {
      "name":{
        "type": "text"
      },
      "desc":{
        "type":"keyword"
      }
    }
  }
}

网络异常,图片无法展示
|

再创建一个索引库,使用默认字段,新增数据

网络异常,图片无法展示
|

再插入一条

网络异常,图片无法展示
|

查看数据

网络异常,图片无法展示
|

使用keyword分词器查询数据 ,发现结果不会被分隔,因为keyword是一个整体,也可以说字符串没有被分析

GET _analyze
{
  "analyzer": "keyword",
  "text": "魏一鹤学习Java"
}

网络异常,图片无法展示
|

使用普通数据类型使用分词器,发现结果被分隔,正常的字符串是可以分析的

GET _analyze
{
  "analyzer": "standard",
  "text": "魏一鹤学习Java"
}

网络异常,图片无法展示
|

结论:

keyword类型不会被分词器解析

相关文章
|
JavaScript 前端开发 Java
64jqGrid - 在搜索中显示查询条件
64jqGrid - 在搜索中显示查询条件
59 0
|
存储 自然语言处理 Java
【elasticsearch】记录ES查询数据结果为空的问题(单个字搜索可以,词语搜索为空)
【elasticsearch】记录ES查询数据结果为空的问题(单个字搜索可以,词语搜索为空)
665 0
接口数据多条件搜索(模糊查询)
接口数据多条件搜索(模糊查询)
235 0
|
7月前
|
SQL 前端开发 Java
实现数据的搜索( 筛选 )功能
实现数据的搜索( 筛选 )功能
|
JavaScript
js多条件筛选(可单条件搜索还可以模糊查询)
js多条件筛选(可单条件搜索还可以模糊查询)
284 0
|
存储 Java API
ES多字段匹配查询时的权重控制
ES多字段匹配查询时的权重控制
833 0
ES多字段匹配查询时的权重控制
|
数据采集 开发者
|
前端开发 JavaScript
多条件搜索
多条件搜索
95 0
|
SQL 索引
白话Elasticsearch03- 结构化搜索之基于bool组合多个filter条件来搜索数据
白话Elasticsearch03- 结构化搜索之基于bool组合多个filter条件来搜索数据
301 0
|
iOS开发 索引
LeetCode--1773. 统计匹配检索规则的物品数量
给你一个数组 items ,其中 items[i] = [typei, colori, namei] ,描述第 i 件物品的类型、颜色以及名称。 另给你一条由两个字符串 ruleKey 和 ruleValue 表示的检索规则。 如果第 i 件物品能满足下述条件之一,则认为该物品与给定的检索规则 匹配 : ruleKey == "type" 且 ruleValue == typei 。 ruleKey == "color" 且 ruleValue == colori 。 ruleKey == "name" 且 ruleValue == namei 。 统计并返回 匹配检索规则的物品数量 。
81 0