我一直在努力解决一个简单的语法问题,试图让基本的ES映射工作。这是版本1.1.1
我有一个能够从头开始创建所有东西的要点:
https://gist.github.com/jrmadsen67/1fc5e296e26e7a5edae0
映射查询是:
PUT /movies/movie/_mapping
{
"movie": {
"properties": {
"director": {
"type": "multi_field",
"fields": {
"director": {"type": "string"},
"original": {"type" : "string", "index" : "not_analyzed"}
}
}
}
}
}
我跑了:
curl localhost:9200/movies/movie/_mapping?pretty=true
确认映射实际存在
查询:
POST /movies/movie/_search
{
"query": {
"constant_score": {
"filter": {
"term": { "director.original": "Francis Ford Coppola" }
}
}
}
}
没有得到任何点击。 {“director”:“francis”}按预期工作。
非常感谢另一组眼睛可以告诉我这有什么问题!
答案 0 :(得分:0)
与您的文档匹配的当前映射是:
{
"movie" : {
"properties" : {
"director" : {
"type" : "string"
},
"genres" : {
"type" : "string"
},
"title" : {
"type" : "string"
},
"year" : {
"type" : "long"
}
}
}
}
要匹配您的映射和查询,文档应如下所示:
{
"director": {
"director": "Francis Ford Coppola",
"original": "xxxxxx"
}
}
答案 1 :(得分:0)
这个问题只不过是在添加映射后重新索引数据的需要。
对于遇到这种麻烦的其他人来说,这是一个很好的演练: