Elasticsearch MongoDb河流参考处理

时间:2014-07-29 19:21:25

标签: mongodb search elasticsearch relation

我按照这个mongodb示例:http://doctrine-mongodb-odm.readthedocs.org/en/latest/tutorials/getting-started.html

我还在弹性搜索中安装了一条mongodb河:https://github.com/richardwilly98/elasticsearch-river-mongodb

一切正常,用户实体在mongodb中有几个帖子实体。在研究elasticsearch时,有以下数据结构:

{
    "_index": "doctrine",
    "_type": "user",
    "_id": "53d7f246e2afecdc03d63af3",
    "_score": 1,
    "_source": {
       "_id": "53d7f246e2afecdc03d63af3",
       "email": "email@example.com",
       "name": "Bulat S.",
       "posts": [
          "{ \"$ref\" : \"BlogPost\", \"$id\" : \"53d7f246e2afecdc03d63af1\" }",
          "{ \"$ref\" : \"BlogPost\", \"$id\" : \"53d7f246e2afecdc03d63af2\" }"
       ]
    }
 }

这看起来也很不错。但我想知道这些帖子的参考。我能想象到的最简单的事情就是像"posts": ["53d7f246e2afecdc03d63af1", "53d7f246e2afecdc03d63af2"]这样的一组简单的帖子。这将使搜索变得非常容易。但是我怎样才能处理河边提供的标记?在posts字段中搜索是否有好的查询?为什么"转义?

1 个答案:

答案 0 :(得分:0)

双引号被转义,因为它们在另一组双引号内。如果它们没有被转义,它会过早地发出字符串结束的信号。

您看到DBRef字段中存储posts的原因是因为Doctrine使用它们来映射关系。结帐Doctrine - Simple References仅用于存储ObjectId