es keyword和text的区别以及联想词实现方案

简介: es keyword和text的区别以及联想词实现方案

keyword和text的区别

相同

支持模糊查询和精确查询

不同

分词

keyword 不分词

text 分词

聚合查询

keyword 支持

text 不支持

联想词实现方案

内容

基于es的keyword和text来实现

keyword 类型

存储多个相关关键字, 使用间隔符分开, 查询时使用正则查询(wildcard)

text 类型

存储需要分词的关键字, 比如中间可能会带符号的关键词, 我一般用来存储需要搜索出来的关键字

例子

创建一个索引库

PUT /xiaofei_test
{
  "mappings": {
    "type":{
      "properties":{
        "key_text": {
          "type": "text"
        },
        "full_word":{
          "type": "keyword"
        }
      }
    }
  }
}


新增一条数据


PUT /xiaofei_test/type/1
{
  "key_text": "新疆•菠萝密",
  "full_word": "菠萝 水果 新疆 boluo "
}


然后查询的dsl语句为

GET xiaofei_test/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "match_phrase": {
            "key_text": {
              "query": "菠萝",
              "slop": 5 
            }
          }
        },
        {
          "wildcard": {
            "full": "*菠萝*"
          }
        }
      ]
    }
  }
}

text 和slop


slop 的作用是跳词, 允许中间有一些其他字符

用text的原因就是可能你想搜的关键词里面会有一些间隔符之类的, text会分词, 比如说上面的• 之类, 不用text的话我如果要搜 “新疆菠萝密” 肯定是搜不出来的, text和slop的作用就在此体现


查看分词结果


POST xiaofei_test/_analyze
{
  "text": "新疆•菠萝密",
  "field": "key_text"
}





目录
相关文章
|
25天前
|
前端开发 UED 开发者
text-indent 的特殊性
text-indent 的特殊性
66 0
|
8月前
|
Web App开发 存储 自然语言处理
如何解决 SAP UI5 错误消息 - Could not find any translatable text for key appTitle
如何解决 SAP UI5 错误消息 - Could not find any translatable text for key appTitle
56 1
|
8月前
|
存储
SAP ABAP 系统里长文本 Long Text 的设计和读取函数 READ_TEXT 详细讲解试读版
SAP ABAP 系统里长文本 Long Text 的设计和读取函数 READ_TEXT 详细讲解试读版
100 0
|
算法
白话Elasticsearch14-深度探秘搜索技术之基于multi_match 使用most_fields策略进行cross-fields search弊端
白话Elasticsearch14-深度探秘搜索技术之基于multi_match 使用most_fields策略进行cross-fields search弊端
69 0
|
搜索推荐 C++
白话Elasticsearch13-深度探秘搜索技术之基于multi_match+most fields策略进行multi-field搜索
白话Elasticsearch13-深度探秘搜索技术之基于multi_match+most fields策略进行multi-field搜索
61 0
Selenium成长之路-10简单对象定位之partial link text方法
Selenium成长之路-10简单对象定位之partial link text方法
121 0
Selenium成长之路-10简单对象定位之partial link text方法
|
Android开发
libxxx.so- text relocations问题的终极解决方案
问题表现形式 错误或警告日志 当targetSdkVersion>=23且使用debug签名时,在6.0+的Android设备上运行App会输出以下错误Log: E/linker: /data/app/packagename/lib/arm/libxxx.
3058 0
重构——29以数据类取代记录(Replace Record with Data Class)
以数据类取代记录(Replace Record with Data Class):你需要面对传统编程环境中的记录结构;为该记录创建一个“哑”数据对象
1528 0
【laralve项目】@21 array_map的使用(重组数据,把id为键->text为值重组数据)
【laralve项目】@21 array_map的使用(重组数据,把id为键->text为值重组数据)
63 0
【laralve项目】@21 array_map的使用(重组数据,把id为键->text为值重组数据)
|
XML JSON 前端开发
前端培训-初级阶段-场景实战(2019-06-06)-Content-Type对照表及日常使用
前端最基础的就是 HTML+CSS+Javascript。掌握了这三门技术就算入门,但也仅仅是入门,现在前端开发的定义已经远远不止这些。前端小课堂(HTML/CSS/JS),本着提升技术水平,打牢基础知识的中心思想,我们开课啦(每周四)。 axios 日常使用上,感觉不如 $.ajax 但是我之前使用的时候不是改入参就是改方法反正是都解决了。 我也知道问题出在 content-type 上。 之前用的构建开发工具用的是 proxy 代理,不知道有老哥用过没,好几年前初次开发的时候就不更新了,还有 bug。 索性换 axios 代理一下吧,然后报错了。
137 0
前端培训-初级阶段-场景实战(2019-06-06)-Content-Type对照表及日常使用

热门文章

最新文章