ElasticSearch:搜索存储为字符串的json字段,就好像它是嵌套对象一样

时间:2017-08-04 20:24:49

标签: json elasticsearch

我有一个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字段中搜索确切的User或groupdId。理想的情况是将字符串存储为嵌套对象,但在我的情况下,这是不可能的。所以我想知道是否有办法查询这个字符串,好像它可能是一个嵌套对象。

1 个答案:

答案 0 :(得分:0)

APP_VALUE应该被索引为Object而不是字符串值,即

" APP_VALUE":{           "类型" :"对象",           "属性" :{             "组id" :{" type" :" long"},             "名称" :{" type" :" string"},             "用户":{"输入":"字符串"},             ...           }

如果您绝对不能这样做,您可以将其编入索引  "索引":" not_analyzed",  " position_increment_gap":100

这可以给你你所期待的;虽然如果你想从该对象中写出更多独特的查询,你可能会遇到问题。请注意,这将对此字段进行索引,因此可以搜索,但可以完全按照指定索引值。