有一个 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 3 天前 ![]() 不知道 ES 支持这个结构不,
[{ key: "k1", value: "v1"}] 如果支持这个结构就可以实现,Op 看看呢 |