在ES中如何使用术语过滤器的同义词文件以及通配符查询?

时间:2015-11-17 00:32:38

标签: elasticsearch filter

我在弹性搜索中使用同义词,现在我的映射在下面给出

"settings": {
        "index": {
          "analysis": {
            "analyzer": {
              "synonym": {
                "tokenizer": "whitespace",
                "filter": ["synonym"]
              }
            },
            "filter": {
              "synonym": {
                "type": "synonym",
                "synonyms_path": "synonyms.txt"
              }
            }
          }
        }
      },
      mappings : {
        places_city: {
          properties:{
            city         : {"type" : "string", "index": "analyzed", "analyzer": "synonym"},
          }
        }
      }

现在我的问题是,如果我在places_city.city上使用过滤器,我的意思是“城市”#39;字段比没有问题一切正常,但问题是每当我尝试使用查询或通配符查询' city'字段ES没有返回任何东西,所以我做错了什么我认为问题在于我的映射,所以如果有人知道这个,请帮助我想用我的城市'字段作为过滤器和通配符查询。

更新 - 我正在使用的查询在下面给出

bool: {
                "disable_coord": true,
                "must": [
                  {
                    "constant_score": { // here i am using this because to remove tf/idf factors from my scoring
                      boost: 1.02,
                      "query": {
                        query_string: {
                          query: location_search,
                          fields: ['places_city.city'],
        //                 boost: 4
                        }
                      }
                    }
                  }
                ], 
                "should": [
                  {
                    "constant_score": {
                      boost: 10,
                      "query": {
                        query_string: {
                          query: curr_city,
                          fields: ['places_city.city'],
                    //     boost: 8
                        }
                      }
                    }
                  }
                ]
              }
            }

0 个答案:

没有答案