json - 搜索使用json文件创建的 Elasticsearch 索引

标签 json elasticsearch nested parent-child

我使用以下代码将json文件(如下所示)推送到ES: with open('test.json','rb') as payload: headers = {'content-type': 'application/json'} r = requests.post('http://localhost:9200/test_nest_json/1',data=payload, verify=False, headers=headers) { "data": [ { "keyword": "abc", "lists": [ { "item_val": "some_val" } ], "another_key": "some_key" }, { "keyword": "xyz", "lists": [ { "item_val":"another_val" } ], "another_key": "pqr" } ] }
我尝试更新映射并使用了term查询,但仍然导致显示所有索引。我无法使用词条查询来查询像"data.keyword" = "abc"这样的一个关键字。

最佳答案

看起来您的嵌套对象有问题
https://www.elastic.co/guide/en/elasticsearch/guide/current/nested-objects.html

The reason for this cross-object matching, as discussed in Arrays of Inner Objects, is that our beautifully structured JSON document is flattened into a simple key-value format in the index



因此,存储的有效文档如下所示:
{
  "data.keyword":            [ abc, xyz ],
  "data.another_key":        [ some_key, pqr ],
}

这意味着您发布的查询将与任何文档匹配,只要至少一个嵌套对象的包含xyz关键字即可。我建议阅读上面的链接进行澄清。

关于json - 搜索使用json文件创建的 Elasticsearch 索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42310611/

相关文章:

javascript - 有人可以解释 SUM 函数任务吗?

c# - 将 JSON 字符串转换为 JSON 对象 c#

C# - Json 反序列化具有子属性的对象

elasticsearch - 如何删除Kibana 7.8.1 Spaces上的“管理菜单”,以及如何使“仪表板”页面成为主体?

hadoop - Elasticsearch-Hadoop如何在spark程序中进行批量搜索

python - 如何在elasticsearch中结合query_string和时间戳范围

linux - shell脚本中的三重嵌套引号

objective-c - 将 NSDictionary 值(id?)转换为 NSString 或 NSNumber 以进行比较

javascript - 如何在 Microsoft Edge 中使用 Scripting.FileSystemObject

list - LISP - 如何从嵌套列表中获取平均长度?一步一步的解释