首页 > 解决方案 > 您好,我正在尝试在我的节点 js 应用程序的弹性搜索中使用通配符查询和过滤器

问题描述

我从用户那里得到搜索项

let eventSearch="*"+event.SearchTerm+"*";

这是查询对象

   let queryObject =
    {  
        index: 'mark_deling_test2',
        type: 'product',
        body: {
            "from" : event.StartIndex, "size" : event.ResultSize,
            "query": {
                "filtered":{
                    "query":{
                      "query_string":{
                         "fields":     [ "Name^2.5", "Description", "keywords^1.75" ],
                         "query":eventSearch,
                         "analyze_wildcard":true

                        }
                    },
                    "filter":{
                        "term":{
                          "groups": "CA-IBO"
                        } 
                    }
                }

            }
        }
    };

然后发送这个查询对象进行搜索

这是行不通的。如果我不使用过滤器,它会起作用。请帮忙!

标签: elasticsearch

解决方案


Get mark_deling_test2/_search
  {
   “query”: {
  “bool”: {
    “must”: {
      “query_string”: {
         “query”: “nut*“,
         “fields”: [“Name”, “Description”, “keywords”]
       }
     },
     “filter”: {
       “term”: {
     “groups”: “US-IBO”
       }
     }
   }
 }
}

推荐阅读