如何创建一个映射来标记空格上的字符串,并将其更改为小写以进行索引?
这是我当前的映射,由空格标记,我无法理解如何小写它并搜索(查询)相同...
{
"mappings": {
"my_type" : {
"properties" : {
"title" : { "type" : "string", "analyzer" : "whitespace", "tokenizer": "whitespace", "search_analyzer":"whitespace" }
}
}
}
}
请帮忙......
答案 0 :(得分:10)
我设法编写了一个自定义分析器,这有效......
"settings":{
"analysis": {
"analyzer": {
"lowercasespaceanalyzer": {
"type": "custom",
"tokenizer": "whitespace",
"filter": [
"lowercase"
]
}
}
}
},
"mappings": {
"my_type" : {
"properties" : {
"title" : { "type" : "string", "analyzer" : "lowercasespaceanalyzer", "tokenizer": "whitespace", "search_analyzer":"whitespace", "filter": [
"lowercase"
] }
}
}
}
答案 1 :(得分:3)
您有两种选择 -
simple analyser可能会满足您的需求:
curl -XGET 'localhost:9200/myindex/_analyze?analyzer=simple&pretty' -d 'Some DATA'
{
"tokens" : [ {
"token" : "some",
"start_offset" : 0,
"end_offset" : 4,
"type" : "word",
"position" : 1
}, {
"token" : "data",
"start_offset" : 5,
"end_offset" : 9,
"type" : "word",
"position" : 2
} ]
}
在映射中使用简单分析器:
{
"mappings": {
"my_type" : {
"properties" : {
"title" : { "type" : "string", "analyzer" : "simple"}
}
}
}
}
第二个选项是定义您自己的custom analyser并指定如何标记和过滤数据。然后在映射中参考这个新的分析器。