V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
NASK

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

  •  
  •   NASK · Mar 27, 2025 · 3464 views
    This topic created in 397 days ago, the information mentioned may be changed or developed.

    有一个 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 replies    2025-03-27 13:33:34 +08:00
    boneyao
        1
    boneyao  
       Mar 27, 2025   ❤️ 1
    不知道 ES 支持这个结构不,
    [{ key: "k1", value: "v1"}]

    如果支持这个结构就可以实现,Op 看看呢
    NASK
        2
    NASK  
    OP
       Mar 27, 2025
    @boneyao 我试试
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   989 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 19:32 · PVG 03:32 · LAX 12:32 · JFK 15:32
    ♥ Do have faith in what you're doing.