有一个 map 集合,里面 key 的名称不确定,集合元素数量不确定。
我需要查询 map 集合内某个 key 为某个值的数据。如果是把 map 集合转为 json 作为一个字段存到 ES 的应该可以解决,因为这种情况下我的字段名是固定的,我只需要将查询条件分词,然后根据字段名去和对应的 json 去匹配就可以了。
但是如果 map 的 key 是 index 的字段名应该如何搜索呢?
比如查询输入的是 手机品牌(字段名) 小米(值),但是 map 的 key 只有 品牌(字段名) 比如查询输入的是 价格(字段名) 21 (值),但是 map 的 key 只有 手机价格(字段名)
代码如下: 这段代码中 params 变量的 key 会作为字段名,value 会作为字段值
@Data @NoArgsConstructor @AllArgsConstructor @JsonIgnoreProperties(ignoreUnknown = true) @Document(indexName = "test_index") public class TopLevelParam implements Serializable { public static final String TECH_CODE="techCode"; public static final String PARAMS="params"; public static final String PARAMS_PREFIX="params."; @Id private String techCode; @Field(type = FieldType.Nested,dynamic = Dynamic.TRUE) private Map<String,Object> params =new HashMap<>(); }
![]() | 1 boneyao 196 天前 ![]() 不知道 ES 支持这个结构不, [{ key: "k1", value: "v1"}] 如果支持这个结构就可以实现,Op 看看呢 |