Lucene 如何在elasticsearch中使用查询字符串语法搜索这组字段
可能是我创建的索引错误,但我有一个包含变量字段名的lead索引,需要搜索。我创建了一个名为fields的子对象,其中包含名称和值。样本:Lucene 如何在elasticsearch中使用查询字符串语法搜索这组字段,lucene,
elasticsearch,Lucene,
elasticsearch,可能是我创建的索引错误,但我有一个包含变量字段名的lead索引,需要搜索。我创建了一个名为fields的子对象,其中包含名称和值。样本: [ { "name": "first_name", "value": "XXX" }, { "name": "last_name", "value": "XXX" }, { "name": "email", "value": "X0@yahoo.com" }, { "name"
[
{
"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"
}
]
名称
字段为未分析
,值
字段为已分析
未分析,如.exact and.search
我想我可以从一个查询字符串查询中得到我想要的结果
+fields.name: first_name +fields.value.exact: XXX
但它不像我想的那样工作。我想这是因为我正试图将其作为mysql而不是nosql使用,我必须进行一次根本性的大脑转换。虽然您所采取的方法可能需要付出足够的努力,但您最好为所有内容使用显式字段名,例如: { “姓名、名”:“XXX”, “姓名”:“XXX”, 等 } 然后您的查询字符串如下所示: 姓名:XXX
如果您是elasticsearch的新手,请在添加映射之前先尝试一下。动态默认值应该生效,一切都会正常。然后添加映射以获得对字段行为的细粒度控制 谢谢你的回复。多少字段是太多字段?问题是我有近500个字段。并不是所有字段都有值。与其显式地映射所有这些字段,我是否最好只考虑文档的动态特性?很抱歉延迟了响应。对于这么多的字段,最好使用动态模板:确保每个字段都有正确的行为。此外,如果要跨越所有数据,您可能需要利用_all字段来查询单个字段。