可能是我创建了错误的索引,但是我有一个带有可变字段名称的首要索引,我需要搜索。我创建了一个名为fields的子对象,其中包含名称和值。样品:
[
{
"name": "first_name",
"value": "XXX"
},
{
"name": "last_name",
"value": "XXX"
},
{
"name": "email",
"value": "X0@yahoo.com"
},
{
"name": "address",
"value": "X Thomas RD Apt 1023"
},
{
"name": "city",
"value": "phoenix"
},
{
"name": "state",
"value": "AZ"
},
{
"name": "zip",
"value": "12345"
},
{
"name": "phone",
"value": "5554448888"
},
{
"name": "message",
"value": "recently had XXXX"
}
]
name
字段为not_analyzed
,value
字段为analyzed
,而不是.exact和.search
我以为我可以从查询字符串查询中获取我想要的结果,例如
+fields.name: first_name +fields.value.exact: XXX
但它并没有像我想象的那样工作。我认为它是因为我试图将它用作mysql而不是nosql,并且我必须有一个基本的大脑转移。
答案 0 :(得分:1)
虽然你正在采取的方法可能应该付出足够的努力,但你最好为所有事情都有明确的字段名称,例如: { “name.first_name”:“XXX”, “name.last_name”:“XXX”, 等等... }
然后你的query_string看起来像这样: name.first_name:XXX
如果您是弹性搜索的新手,请在添加映射之前解决问题。动态默认值应该启动,事情会起作用。然后,您可以添加映射以对字段行为进行细粒度控制。