我很好奇是否可以在ElasticSearch中设置索引结构和查询,以便可以在尽可能少的查询中实现以下操作。

让我们定义系统中存在的一些东西。

  • 文档具有与其来源,数据类型等相关的大量信息。为简化起见,我们将为它们提供三个字段: idtonedate 它包含一些全文元素,但已经处理完毕
  • 报表中有一堆与搜索查询相关的信息。 为了我们的目的,它们分别存储。 它们也有一个ID,我们称为idReport
  • 剪辑报表文档之间的链接。 它以id - idReport映射的形式表示,可以具有第三个可选字段: tone的替代

我们系统中的主要障碍是,关联链接中存在的tone需要覆盖文档中所有方面的tone ,但不能替换。 有些报告可能认为文档是肯定的,而另一些报告则认为它是中立的,甚至是肯定的。

我正在考虑将报表链接存储为文档中的嵌套字段。 实际上,文档如下:

 {
   id: integer,
   tone: integer,
   reports: [
      { id: integer,
        tone: integer
      }
   ]
 }

关键问题是在一个查询中是否有可能使用嵌套字段中存在的任何内容无缝覆盖该音调。 如果没有,最好的前进方向是什么?

===============>>#1 票数:2 已采纳

可以在1个查询中使用脚本字段

我要做的是将嵌套报表重组为这样的对象:

  {
     id: integer,
     tone: integer,
     reports: {
       idA: {
         tone: integer
       } ,
       idB: {
         tone: integer
       } 
     }
   }

然后进行类似的查询,该查询返回“ toneWithFallback”作为包含所需内容的字段:

    {
        "query" : {
           ...
        },
        "script_fields" : {
            "toneWithFallback" : {
                "script" : "_source.reports[reportId].empty || _source.reports[reportId].tone.empty ? _source.reports[reportId].tone: _source.tone ",
                "params" : {
                    "reportId"  : "<theIdAsAString>"
                }
            }
        }
   }

您还可以按脚本过滤排序构面

  ask by Sébastien Renauld translate from so

未解决问题?本站智能推荐:

1回复

如何用Elasticsearch中的另一个字段覆盖@timestamp字段?

我使用错误的@timestamp字段错误地将大量文档存入Elasticsearch。 我已经更改了受影响的Logstash管道以使用正确的时间戳,但我无法重新获取旧数据。 但是我有另一个文档字段可以用作时间戳( json.created_at )。 所以我想更新这个领域。 我发现我可
1回复

Elasticsearch多字段索引

假设我有一个名为“标题”的字段,我想使用不同的分析器(标准和英语)对其进行索引。 使用多字段映射或创建两个单独的字段之间有区别吗? 使用多字段映射: https ://www.elastic.co/guide/zh-CN/elasticsearch/guide/current/multi
1回复

ElasticSearch中的索引字段

在Solr模式中,我们将字段的索引定义为true / false,这对搜索查询很有帮助。 例如: 如何在ElasticSearch中实现相同的功能。 我知道有一个名为“ _index”的映射,但不确定其功能。 谁能帮我这个?
1回复

没有索引字段的Elasticsearch索引

我需要创建一个Elasticsearch索引,其内容只能由document-id访问。 永远不会有任何与文档内容相关的查询。 这些文档可以包含任何 JSON,包括同一字段可以包含不同类型的数据的实例,等等。 我一直在寻找此信息,并且发现了很多有关索引各个字段的信息,但没有发现将整个文档
1回复

Elasticsearch按索引类型和字段搜索

我想搜索单个索引类型,然后通过匹配单个字段进一步对其进行过滤。 假设我有书籍,电影和玩具类型。 现在,我想搜索惊悚类型的电影,我该怎么做? 我有此代码无法正常工作并产生一些错误: 错误是这样的:
1回复

Elasticsearch中基于字段日期的索引

我正在使用以下配置将使用logstash(版本1.5.3)的syslog导入elasticsearch(版本1.7.1)。 我的索引是根据当前日期和时间创建的,即logindex-2015-08-07 。 我想使用上述格式{+YYYY-MM-dd}根据日期syslog_timest
2回复

Elasticsearch中的索引_index字段

我有与某些日期/时间范围不相关的索引,而是与数据源相关(但是被认为是相同的_type,对于我的目的,此结构是必须的) 我只是希望能够按索引进行过滤(因此可以制作一个可视化工具,允许用户单击并按索引进行搜索), 我注意到_index字段未建立索引! 所以我一起去发现了 在ap
1回复

ElasticSearch索引,添加字段

我想使用弹性搜索为下面提供的JSON模式编制索引 但是,元数据可能会有所不同,我不知道可能存在的所有字段。 有没有办法告诉弹性搜索,如果它在元数据对象中看到一个值以某种方式对其进行索引? (我知道所有值都是字符串) 谢谢
1回复

Elasticsearch中带有连字符的索引字段

我正在尝试设计如何配置elasticsearch,以便我可以在包含连字符的字段上使用通配符进行查询字符串搜索。 我的文档看起来像这样: 我试过使用word_delimiter过滤器和空格标记器: 但这些是搜索(标签)及其结果: 谁能看到我哪里出错了? 谢谢 :
1回复

在Elasticsearch中将索引的字段类型更改为新索引

可以说我有索引,其映射如下所示: 我想从旧索引创建一个新索引,但是现在我希望“单词”类型字段是“关键字”而不是“文本”: 我怎样才能做到这一点? 我可以使用“ Reindex API”还是有更好的解决方案?