elasticsearch ElasticSearch:当查询有一个被其他字符包围的通配符时,我正在努力使用小写
我正在使用安装在Windows服务器上的ElasticSearch 5.1.1。我正在使用KibanaV5.1.2进行测试 我的字段“p.code_lower”的定义如下:
elasticsearch ElasticSearch:当查询有一个被其他字符包围的通配符时,我正在努力使用小写,
elasticsearch,
elasticsearch,我正在使用安装在Windows服务器上的ElasticSearch 5.1.1。我正在使用KibanaV5.1.2进行测试 我的字段“p.code_lower”的定义如下: { "unittest_catalogdata": { "mappings": { "product": { "properties": { "p": { "properties": { "code_lower":
{
"unittest_catalogdata": {
"mappings": {
"product": {
"properties": {
"p": {
"properties": {
"code_lower": {
"type": "text",
"fields": {
"sort_field": {
"type": "keyword"
}
},
"analyzer": "lower_keyword"
}
}
}
}
}
}
}
}
"analysis": {
"analyzer": {
"lower_keyword": {
"filter": "lowercase",
"tokenizer": "keyword"
}
}
}
我的分析仪定义如下:
{
"unittest_catalogdata": {
"mappings": {
"product": {
"properties": {
"p": {
"properties": {
"code_lower": {
"type": "text",
"fields": {
"sort_field": {
"type": "keyword"
}
},
"analyzer": "lower_keyword"
}
}
}
}
}
}
}
}
"analysis": {
"analyzer": {
"lower_keyword": {
"filter": "lowercase",
"tokenizer": "keyword"
}
}
}
p.code_中索引的以下值较低:
Cab.B30
Cab.B40
Cab.B50
Cab.B100
Cab.B120
*请注意,分析器是“关键字”+“小写”的,因为我们需要能够执行一个查询,其中“p.code\u lower:cab.b30”
返回一个结果。由于我们的代码中有一个点,这是我们发现的使ElasticSearch对该字段起作用的唯一方法
此查询返回0个结果:
GET /unittest_catalogdata/_search
{
"query": {
"query_string": {
"query": "p.code_lower:Cab.B?0",
"lenient": true,
"analyze_wildcard": true
}
}
}
但是这个查询(注意小写)返回3个代码(Cab.B30、Cab.B40、Cab.B50)
此查询(大写,但无字段名)返回3个代码(Cab.B30、Cab.B40、Cab.B50):
此查询按预期返回所有5个代码:
"query": "B*",
但这并不是:
"query": "p.code_lower:Cab.B*",
但这是可行的(再次小写):
如果p.code\u lower:Cab.B?0
将在搜索的字符是小写还是大写的情况下工作,那么可以执行不区分大小写的查询吗?所有这些都保留了使用包含点的查询进行搜索的能力,即:p.code\u lower:Cab.B30
谢谢您是否尝试使用默认分析器(
standard
)。它保留了圆点。而且应该像你期望的那样工作。谢谢你,你是对的!我无缘无故地把事情复杂化了。
"query": "p.code_lower:cab.b*",