【发布时间】:2014-10-18 13:49:17
【问题描述】:
我们使用的是弹性搜索 1.1.0。我们正在尝试使用 match_phrase_prefix 查询索引,如下所示:
{
"query":{
"match_phrase_prefix" : {
"name" : {
"query" : "Harry Joy"
}
}
}
}
我们有 4 条名为 Harry Joy 的记录。如果我们写全名,上面的查询可以完美运行,但是如果我们写名字和姓氏的第一个字符,它只返回 1 条记录而不是 4 条。
以下查询仅返回 1 条记录:
{
"query":{
"match_phrase_prefix" : {
"name" : {
"query" : "Harry J"
}
}
}
}
但以下查询返回所有 4 条记录:
{
"query":{
"match_phrase_prefix" : {
"name" : {
"query" : "Harry Jo"
}
}
}
}
我们还需要能够在第二个单词中使用单个字符搜索所有 4 个字符。我们可以在这里做些什么来使它工作,不只使用 1 个字符进行搜索而在第二个单词中使用 2 个字符的原因是什么?
这就是我创建索引的方式:
{
"river": "users",
"data": {
"type": "mongodb",
"mongodb": {
"servers": [
{ "host": "localhost", "port": 27017 }
],
"db": "mydb",
"collection": "users",
"gridfs": false
},
"index": {
"name": "susers",
"type": "users"
}
}
}
【问题讨论】:
-
'Harry J' 为我返回 4 个结果。
name属性的映射是什么? -
@DanTuffery 你所说的映射是什么意思?如果您的意思是如何创建索引而不是我更新了我的问题。
-
“用户”是否有架构(映射)?我认为 Dan 想了解更多有关名称字段的信息。使用什么分析器等。
-
@coffeeaddict 不,它没有任何字段映射。
-
@coffeeaddict 我还尝试按照 Dan 在他的回答中建议的添加映射(目前已被他删除),以使单独的文件保持不变,因为未对其进行分析和搜索。但在那我失去了不区分大小写的功能。我必须像在现场一样完美地写作。
标签: database search elasticsearch