【问题标题】:ElasticSearch : Search json field stored as string as if it were a nested objectElasticSearch:搜索存储为字符串的 json 字段,就好像它是一个嵌套对象一样
【发布时间】:2017-08-05 19:57:03
【问题描述】:

我有一个具有以下对象类型的 ES 索引:

 {
    "_index": "my_index",
    "_type": "logs",
    "_id": "150",
    "_score": 18.605173,
    "_source": {
       "APP_ID": "my id",
       "APP_VALUE": "{\"groupIds\":[798,919],\"Name\":\"groupTestRep\",\"User\":\"TEST USER\"}",
       "LAST_MOD_DATE": 1461711863000,
     }
 },

是否有一种确定的方法可以在 APP_VALUE 字段中搜索确切的用户或 groupdId。理想的情况是将字符串存储为嵌套对象,但在我的情况下这是不可能的。所以我想知道是否有办法查询这个字符串,就好像它可能是一个嵌套对象一样。

【问题讨论】:

    标签: json elasticsearch


    【解决方案1】:

    APP_VALUE 应该被索引为一个对象而不是字符串值,即。

    “APP_VALUE”:{ “类型”:“对象”, “特性” : { “groupIds”:{“type”:“long”}, “名称”:{“类型”:“字符串”}, “用户”:{“类型”:“字符串”}, ... }

    如果您绝对不能这样做,您可以将其索引为 “索引”:“未分析”, "position_increment_gap": 100

    这可以满足您的期望;尽管如果您想从该对象中编写更多独特的查询,您可能会在以后遇到问题。请注意,这将索引该字段,因此它是可搜索的,但索引值与指定的完全一致。

    【讨论】:

      猜你喜欢
      • 2021-03-27
      • 2022-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-23
      • 1970-01-01
      • 2023-03-14
      相关资源
      最近更新 更多