V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NASK
V2EX  ›  Elasticsearch

ElasticSearch 查询时如果不确定字段名如何进行搜索?

  •  
  •   NASK · 3 天前 · 689 次点击

    有一个 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<>();
    
    }
    
    2 条回复    2025-03-27 13:33:34 +08:00
    boneyao
        1
    boneyao  
       3 天前   ❤️ 1
    不知道 ES 支持这个结构不,
    [{ key: "k1", value: "v1"}]

    如果支持这个结构就可以实现,Op 看看呢
    NASK
        2
    NASK  
    OP
       3 天前
    @boneyao 我试试
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3039 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 00:07 · PVG 08:07 · LAX 17:07 · JFK 20:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.