Solr无法索引和查询具有键值对的对象列表

Solr无法索引和查询具有键值对的对象列表,solr,solrj,Solr,Solrj,我正在尝试为一组文档编制索引,其中包含具有键值对的对象列表。我能够索引文档,但无法查询文档,因为solr没有返回任何结果 请帮我做这个 我的示例数据源: { "_id" : ObjectId("5b856d762aa4df47ec47d265"), "interestgroups" : [], "emailId" : "2015msunitedstates@gmail.com", "mkmdata" : [ { "visi

我正在尝试为一组文档编制索引,其中包含具有键值对的对象列表。我能够索引文档,但无法查询文档,因为solr没有返回任何结果

请帮我做这个

我的示例数据源:

{
    "_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",
      }
    ]