这个问题是我的两个问题的组合:
第一个问题的答案允许我使用“ /”和“-”搜索数据。但是搜索是区分大小写的。
在第二个问题中,我进行了不区分大小写的搜索,但是搜索“ /”和“-”已损坏。
我现在所拥有的:
{
"settings": {
"analysis": {
"analyzer": {
"folding": {
"tokenizer": "whitespace",
"filter": [ "lowercase", "asciifolding" ]
}
},
"normalizer": {
"lowerasciinormalizer": {
"type": "custom",
"filter": [ "lowercase", "asciifolding" ]
}
}
}
},
"mappings": {
"entity": {
"properties": {
"Description": {
"type": "text",
"analyzer": "whitespace",
"fields": {
"keyword": {
"type": "keyword",
"normalizer": "lowerasciinormalizer"
}
}
},
"Name": {
"type": "text",
"analyzer": "whitespace",
"fields": {
"keyword": {
"type": "keyword",
"normalizer": "lowerasciinormalizer"
}
}
}
}
}
}
}
该索引允许我执行不区分大小写的搜索,但是找不到这样的文档:
PUT
{
"name": "Harry Potter",
"author": "Some 28/56 another"
}
POST
{
"query": {
"query_string": { "default_field": "author", "query": "*28\\/56*" }
}
}
是否可以使用不区分大小写的搜索,使其与“ /”和“-”一起使用?
答案 0 :(得分:1)
您已经定义了一个名为folding
的分析器,该分析器可以满足您不区分大小写的搜索的要求,其中不使用/
和-
来标记输入字符串。您应该在映射中添加author
,如下所示:
"author": {
"type": "text",
"analyzer": "folding"
}
然后使用以下查询进行匹配:
{
"query": {
"query_string": {
"default_field": "author",
"query": "28\\/859"
}
}
}
如果只希望使用小写的空白标记器,则定义另一个分析器,如下所示:
"lowercaseWs": {
"filter": [
"lowercase"
],
"tokenizer": "whitespace"
}
然后将以上内容与author
字段一起使用,如下所示:
"author": {
"type": "text",
"analyzer": "lowercaseWs"
}