arc*_*123 5 null elasticsearch elasticsearch-query
我有一个 SQL 表,正在导出到 Elasticsearch。
其中一列是可为空的数字字段,某些记录中存在空值。
当我们尝试为表建立索引时,会出现以下错误:
表的 ETL(BigQuery -> ElasticSearch)作业之一:MLS 已对索引 20000 中的 10000 个块进行 ES 失败,可能是由于对象不兼容。
Run Code Online (Sandbox Code Playgroud)Failing BigQuery Table: MLS Stack Trace of the error: Traceback (most recent call last): File "/Users/asif/zodiacbackend/zodiacbackend/tasks.py", line 205, ininsertIntoES helpers.bulk(es, doc_generator(dataframe,table)) 文件“/Users/asif/zodiacbackend/env/lib/python3.7/site-packages/elasticsearch/helpers/actions.py”,第 300 行,批量好的,streaming_bulk(客户端,操作,*args,**kwargs)中的项目:文件“/Users/asif/zodiacbackend/env/lib/python3.7/site-packages/elasticsearch/helpers/actions.py”,第230行,在streaming_bulk **kwargs文件“/Users/asif/zodiacbackend/env/lib/python3.7/site-packages/elasticsearch/helpers/actions.py”中,第158行,在_process_bulk_chunk中引发BulkIndexError(“%i文档(s) ) 索引失败。" % len(errors), 错误) elasticsearch.helpers.errors.BulkIndexError: ('2 个文档索引失败。', [{'index': {'_index': 'mls', '_type':'mls','_id':'b100qHABEFI45Lp-z3Om','状态':400,'错误':{'type':'illegal_argument_exception','reason':'不同类型的映射器[Lot_Size_Sq_Ft], current_type [text], merged_type [long]'}, 'data': { 'Lot_Size_Sq_Ft': Decimal('13504')}}}])
如何让系统识别空值?
Ami*_*wal 11
用户 WittyID 错过了一些重要的事情,例如:
\n\nnull_value必须与您的字段具有相同的数据类型,因此在他的示例中,他声明了integer字段但定义NULL为null_values, 会抛出异常,这在官方链接json_parse_exception中提到important如下所示:\n\n\nnull_value 需要与字段具有相同的数据类型。例如,长字段不能有字符串 null_value。
\n
null_value影响数据的索引方式,它不会修改 _source 文档,因此在源文档中,您传递的任何内容都将被存储,而不是参数中提到的,null_values并且在查询时您还需要使用值null_value参数。。简而言之,nullES 无法识别,因此您可以定义自定义值,null然后使用它来索引和查询null值。使用下面的示例很容易解释整个事情,任何人都可以尝试:
{\n "mappings": {\n "properties": {\n "my_signed_integer": {\n "type":"integer",\n "null_value": -1 --> note we defining `null` values as `-1`.\n }\n }\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n存储null整数文档
{\n "my_number" : null\n }
如果您从 ES 获取此文档,它将返回如下:
\n\n{\n "_index": "so-6053847",\n "_type": "_doc",\n "_id": "1",\n "_version": 1,\n "_seq_no": 0,\n "_primary_term": 1,\n "found": true,\n "_source": {\n "my_number": null. --> As explained earlier, in source its stored as `null`.\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n指数非负值
\n\n{\n“我的号码”:10\n}
null值的整数{\n "query": {\n "term": {\n "my_signed_integer": -1 -->notice same `null_value`, you need to mention\n }\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n结果:
\n\n "hits": [\n {\n "_index": "so-6053847",\n "_type": "_doc",\n "_id": "1",\n "_score": 1.0,\n "_source": {\n "my_signed_integer": null --> notice it shows `null`, not `-1`\n }\n }\n ]\nRun Code Online (Sandbox Code Playgroud)\n\n10{\n "query": {\n "term": {\n "my_signed_integer": 10\n }\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n"hits": [\n {\n "_index": "so-6053847",\n "_type": "_doc",\n "_id": "2",\n "_score": 1.0,\n "_source": {\n "my_signed_integer": 10 -->source matches the indexed value for this doc\n }\n }\n ]\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
18632 次 |
| 最近记录: |