【问题标题】:how to add to different field values and store it in another field in elastic search python (elastic search field operation)如何在弹性搜索python中添加不同的字段值并将其存储在另一个字段中(弹性搜索字段操作)
【发布时间】:2019-01-03 23:51:13
【问题描述】:

我已经编写了这个弹性搜索查询:

es.search(index=['ind1'],doc_type=['doc'])

我得到以下结果:

{'_shards': {'failed': 0, 'skipped': 0, 'successful': 5, 'total': 5},
'hits': {'hits': [{'_id': '1327',
'_index': 'ind1',
'_score': 1.0,
'_source': {'val1': 1,
 'val2': None,
 'value1': 1327,
 'value2': 1531,
 'new_values': {'nv1': 1,
  'nv2': 0},
{'_id': '1349',
'_index': 'ind1',
'_score': 1.0,
'_source': {'val1': 2,
 'val2': 3,
 'value1': 1328,
 'value2': 1539,
 'new_values': {'nv1': 1,
  'nv2': 3}},.......

我想要所有的 add val1、value1 和 nv1 并将其存储在另一个字段中让我们调用总计。我希望结果会是这样的:

{'_shards': {'failed': 0, 'skipped': 0, 'successful': 5, 'total': 5},
'hits': {'hits': [{'_id': '1327',
'_index': 'ind1',
'_score': 1.0,
'_source': {'val1': 1,
 'val2': None,
 'value1': 1327,
 'value2': 1531,
 'new_values': {'nv1': 1,
  'nv2': 0},
 'total1': 1329},
{'_id': '1349',
'_index': 'ind1',
'_score': 1.0,
'_source': {'val1': 2,
 'val2': 3,
 'value1': 1328,
 'value2': 1539,
 'new_values': {'nv1': 1,
  'nv2': 3},
  'total': 1331},.......

【问题讨论】:

  • 您使用的是哪个客户端库?
  • Elasticsearch from elasticsearch import Elasticsearch es = Elasticsearch()
  • 所以你的意思是 Python :-)
  • 是的。 es = Elasticsearch([{'host': 'localhost', 'port': 9200}])

标签: elasticsearch elasticsearch-5 elasticsearch-2.0 elasticsearch-aggregation


【解决方案1】:

您可以做的是使用脚本字段来即时计算该值:

 es.search(index=['ind1'],doc_type=['doc'], body={
    '_source': true,
    'script_fields': {
      'total': {
        'script': {
          'source': 'doc.val1 + doc.value1 + doc.new_values.nv1'
        }
      }
    }
 })

不过,最好的方法是在索引时预先计算,并将值存储在新的 total 字段中。

【讨论】:

  • 而不是加号,如果是负号,它只给出int值作为回报,如何让它浮动?例如:45/4/2 应该是 5.625,但它只给出 5
  • 乘以或除以 1.0 ;-)
  • 假设所有的 val1 值都是相同的,我想通过对每个 val1 值的所有字段求和来聚合它。它的确切查询是什么。
  • 这似乎与您在原始问题中所说的不同。以上是你要求的,它有效吗?
  • 它只做了细微的改动。你能投票给我的问题吗?因为这个平台阻止了我提出新问题。
猜你喜欢
  • 1970-01-01
  • 2017-09-13
  • 1970-01-01
  • 2017-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多