es head测试
1,页面
base_product_info_sap_v3 分片,总共三个分片,相当于数据库
type_base_product_info_sap_sap_alias,相当于表
2,【测试场景】
查询商品编码,查询商品名称
3,【测试数据】
productCode :90
productName:奥利奥,奥
4,测试结果:
query_string:名称:中文分词查询;编码:精确匹配
term:本身含义为精确查询,但是编码可以,名称不行,且下面几个,名称查询都不行(因为productName type定义为text)
fuzzy:编码类似分词查询,模糊匹配
text:都不行
wildcard:编码精确匹配,或者模糊匹配,如何模糊匹配,格式:531644 531* 53164?,*:0个或多个任意字符;?:任意单个字符
prefix:编码匹配前缀
5,【原因】
productCode productName type不同
【mapping】
"product_code": {
"type": "keyword"
},
"product_name": {
"type": "text"
},
6,【单独查询名称=奥】如下图
从结果分析关键字 红色四个条件查询结果一样
原因应该是名称存储是进行了分词,【奥】是分词结果之一,只要名称包含奥,就会被查询到。
text与keyword的区别
https://blog.youkuaiyun.com/qq_26230421/article/details/81947517
https://www.cnblogs.com/sug-sams/p/11038670.html
7,示例详细说明:
7.1 query_string,商品名称查询
分词查询,如查询条件:奥地利,会分成三个词,商品名称只要包含其中一个就会被匹配到
7.2 wildcard商品编码模糊查询
编码精确匹配,或者模糊匹配,如何模糊匹配,格式:531644 531* 53164?,*:0个或多个任意字符;?:任意单个字符