如何使用常用术语使用*搜索多个字段

时间:2015-12-05 05:56:14

标签: elasticsearch

我有以下映射:

"mappings": {

    "mydoctype": {
        ....        
        "properties": {

            "title": {
                "properties": {
                    "en": {
                    ...
                    },
                    "zh_CN": {
                    ...
                    },
                    "zh_TW": { 
                    ...
                    }
                    ...
                }
            },

            ...
        }
    }
}

我想在title.*字段上执行常用术语,但以下查询不会返回任何结果或错误消息。

"common" : {
    "title.*" : {
        "query" : "sleep",
        "cutoff_frequency" : 0.001
    }
}

但是,如果我将上述"title.*"更改为"title.en",那么我可以获得返回的结果。

如何使用常用字词进行"title.*"搜索?或者我可以吗?

2 个答案:

答案 0 :(得分:1)

如果您真的想使用常用术语查询,只需知道它只适用于单个字段,即不是几个字段而不是通配字段。

否则,您可以在other question中使用与multi_match类似的cutoff_frequency查询。

答案 1 :(得分:0)

这是有效的吗?我用它来搜索许多字段上的通配符(带*)

   {
    "query" : {
        "dis_max" : {
            "tie_breaker" : 0,
            "boost" : 1,
            "queries" : [
               {"wildcard" : {"title.en" : "sic*"}}, 
               { "wildcard" : { "title.zh_CN"  : "sic*"}},
               { "wildcard" : { "title.zh_TW" : "*sic*" }}
            ]
        }
    }
   }

dis_max你运行多个查询并连接结果