我做了一個非常簡單的測試。我建立了一個學生的索引和類型,然後我定義的映射:錯誤的索引彈性搜索使用分析器
POST student
{
"mappings" : {
"ing3" : {
"properties" : {
"quote": {
"type": "string",
"analyzer": "english"
}
}
}
}
}
之後,我三年級的學生加入到這個索引:
POST /student/ing3/1
{
"name": "Smith",
"first_name" : "John",
"quote" : "Learning is so cool!!"
}
POST /student/ing3/2
{
"name": "Roosevelt",
"first_name" : "Franklin",
"quote" : "I learn everyday"
}
POST /student/ing3/3
{
"name": "Black",
"first_name" : "Mike",
"quote" : "I learned a lot at school"
}
在這一點上我認爲英語tokeniser將tokenise在我所有的報價的話,所以如果我做一個搜索,如:
GET /etudiant/ing3/_search
{
"query" : {
"term" : { "quote" : "learn" }
}
}
我將所有的文件,結果因爲我的tokeniser將等於「學習,學習,學會了」我是對的。但是,當我嘗試這個請求:
GET /student/ing3/_search
{
"query" : {
"term" : { "quote" : "learned" }
}
}
我得到了零命中,在我看來,我應該有第三個文件(至少?)。但對我來說Elasticsearch也應該索引learned
和learning
不僅learn
。我錯了嗎?我的要求錯了嗎?