我正在尝试使用通配符查询从elasticsearch获取记录。
请查看以下查询
get my_index12/_search
{
"query": {
"wildcard": {
"code.keyword": {
"value": "*ARG*"
}
}
}
}
它正在运行并为上述查询提供预期结果。但它不适用于小写值。
get my_index12/_search
{
"query": {
"wildcard": {
"code.keyword": {
"value": "*Arg*"
}
}
}
}
答案 0 :(得分:1)
尝试以下:
映射:
PUT my_index12
{
"settings": {
"analysis": {
"analyzer": {
"custom_analyzer": {
"type": "custom",
"tokenizer": "whitespace",
"char_filter": [
"html_strip"
],
"filter": [
"lowercase",
"asciifolding"
]
}
}
}
},
"mappings": {
"doc": {
"properties": {
"code": {
"type": "text",
"analyzer": "custom_analyzer"
}
}
}
}
}
然后运行Query String
查询
GET my_index12/_search
{
"query": {
"query_string": {
"default_field": "code",
"query": "AB\\-7000*"
}
}
}
它也适用于ab-7000*
让我知道它是否适合你。
答案 1 :(得分:0)
您必须规范化关键字字段:
(来自文档):
PUT index
{
"settings": {
"analysis": {
"normalizer": {
"my_normalizer": {
"type": "custom",
"char_filter": [],
"filter": ["lowercase", "asciifolding"]
}
}
}
},
"mappings": {
"_doc": {
"properties": {
"foo": {
"type": "keyword",
"normalizer": "my_normalizer"
}
}
}
}
}
<强>更新强> 一些额外的信息:
仅应用在角色级别操作的分析链的部分。因此,例如,如果分析器同时执行小写和词干分析,则仅应用小写:对缺少某些字母的单词执行词干会是错误的。
通过将analyze_wildcard设置为true,将分析以*结尾的查询,并通过确保第一个N-1标记上的完全匹配以及最后一个标记上的前缀匹配,从不同标记构建布尔查询