Elasticsearch & X-Pack:如何从嵌套文档中获取顶点/连接

Posted

技术标签:

【中文标题】Elasticsearch & X-Pack:如何从嵌套文档中获取顶点/连接【英文标题】:Elasticsearch & X-Pack: how to get vertices/connections from nested documents 【发布时间】:2017-06-08 11:37:24 【问题描述】:

我刚开始使用 X-Pack for Elasticsearch 并希望连接来自嵌套文档类型的顶点。然而,寻找这方面的文档并没有让我有任何收获。

我拥有的是一个文档索引,其中包含人名/ID 作为嵌套文档(一个文档可以有很多人,一个人可以与多个文档相关)。期望的结果是得到一个人之间有联系的图数据。

有没有人有线索或者可以告诉我这是否可能?

我的部分映射:

mappings: 
    legend: 
        properties: 
            persons: 
                type: 'nested',
                properties: 
                    id: 
                        type: 'string',
                        index: 'not_analyzed'
                    ,
                    name: 
                        type: 'string',
                        index: 'not_analyzed'
                    
                
            
        
    

还有我的 Graph API 查询,这当然不起作用,因为我不知道如何处理嵌套的“persons”字段的“name”字段。

POST sagenkarta_v3/_xpack/_graph/_explore

  "controls": 
    "use_significance": true,
    "sample_size": 20000,
    "timeout": 2000
  ,
  "vertices": [
    
      "field": "persons.name"
    
  ],
  "connections": 
    "vertices": [
      
        "field": "persons.name"
      
    ]
  

提前致谢!

【问题讨论】:

【参考方案1】:

这里讨论了以下问题: https://discuss.elastic.co/t/elasticsearch-x-pack-how-to-get-vertices-connections-from-nested-documents/88709

引自 Mark_Harwood - Elastic 团队成员:

不幸的是 Graph 不支持嵌套文档,但您可以使用 copy_to 在您的映射中将人员数据放在索引字段中 包含根文档。

我可以看到你有一个经典的问题 “computers-want-IDs-but-people-want-labels”并拥有这两个 价值观。在 Graph 中(也可以说是 Kibana 的其余部分)我建议你 为了唯一性,使用结合了 ID 和名称的标记 人类可读性。

copy_to 和 IDs-and-labels 提示是建模的一部分 今年我的弹性演讲中的建议: https://www.elastic.co/elasticon/conf/2017/sf/getting-your-data-graph-ready 3

【讨论】:

以上是关于Elasticsearch & X-Pack:如何从嵌套文档中获取顶点/连接的主要内容,如果未能解决你的问题,请参考以下文章

Elasticsearch入门教程:Elasticsearch索引&映射

elasticsearch系列一:elasticsearch(ES简介安装&配置集成Ikanalyzer)

ElasticSearch基本用法

ElasticSearch Index API && Mapping

elasticsearch

Elasticsearch镜像打包记录