Solr无法索引和查询具有键值对的对象列表
我正在尝试为一组文档编制索引,其中包含具有键值对的对象列表。我能够索引文档,但无法查询文档,因为solr没有返回任何结果 请帮我做这个 我的示例数据源:Solr无法索引和查询具有键值对的对象列表,solr,solrj,Solr,Solrj,我正在尝试为一组文档编制索引,其中包含具有键值对的对象列表。我能够索引文档,但无法查询文档,因为solr没有返回任何结果 请帮我做这个 我的示例数据源: { "_id" : ObjectId("5b856d762aa4df47ec47d265"), "interestgroups" : [], "emailId" : "2015msunitedstates@gmail.com", "mkmdata" : [ { "visi
{
"_id" : ObjectId("5b856d762aa4df47ec47d265"),
"interestgroups" : [],
"emailId" : "2015msunitedstates@gmail.com",
"mkmdata" : [
{
"visitTime" : [
ISODate("1899-12-31T18:30:00.000Z")
],
"city" : ["a","b"],
"source" : [
"Direct-1",
"Direct"
]
},
{
"visitTime" : [
ISODate("2017-07-12T08:36:11.000Z")
],
"city" : [
"Miami"
],
"source" : [
"Email"
]
}
]
}
下面是我的schema.xml
<field name="mkmdata" type="text_general" indexed="true" stored="true" multiValued="true"/>
<field name="mkmdata.city" type="string" indexed="true" stored="true" />
<field name="mkmdata.source" type="string" indexed="true" stored="true" multiValued="true"/>
我的索引文档的格式如下
[
{
"mkmdata": [
"{ \"visitTime\" : [ { \"$date\" : \"1899-12-31T18:30:00.000Z\"}] , \"city\" : [ ] ,\"source\" : [ \"Direct-1\",\"Direct\"] }",
"{ \"visitTime\" : [ { \"$date\" : \"2017-07-12T08:36:11.000Z\"}] , \"city\" : [ \"Miami\"] , \"source\" : [ \"Email\"] }"
],
"emailId": "2015msunitedstates@gmail.com",
"id": "5b856d762aa4df47ec47d265",
}
]
你好吗?你期望得到什么样的结果?文档在索引中是什么样子的?嗨,MatsLindh。你好吗?我的查询是q=emailId:2015msunitedstates@gmail.com&fq=mkmdata.来源:通过电子邮件发送您期望的结果是什么?我想返回与mkmdata匹配的结果。source文档在索引中是什么样子的?它将对象转换为字符串对象将相关数据添加到问题中,并包括文档在索引中的实际外观,因为这与查询相关。Solr不直接支持多级JSON(Elasticsearch iirc默认使用
语法)。@MatsLindh在我的问题中建立索引后更新了数据。请查看并帮助我解决问题“mkmdata”字段已作为单个文本值编入索引。为了能够查询每个字段中的值,必须将其拆分为单独的字段。我不知道如何使用POJO映射实现(如果可以的话)。我的解决方案(对SolrJ了解有限)是手动为文档编制索引,并手动构建字段列表。
[
{
"mkmdata": [
"{ \"visitTime\" : [ { \"$date\" : \"1899-12-31T18:30:00.000Z\"}] , \"city\" : [ ] ,\"source\" : [ \"Direct-1\",\"Direct\"] }",
"{ \"visitTime\" : [ { \"$date\" : \"2017-07-12T08:36:11.000Z\"}] , \"city\" : [ \"Miami\"] , \"source\" : [ \"Email\"] }"
],
"emailId": "2015msunitedstates@gmail.com",
"id": "5b856d762aa4df47ec47d265",
}
]