match_query在elasticsearch中不起作用

时间:2015-05-19 11:04:25

标签: elasticsearch

我是新的ElasticSearch。最近我们开始在我的项目中使用ElasticSearch。 我试图通过使用match_query来获取基于first_name和last_name的数据。 我写这样的查询

{
"query":{
  "multi_match" : {
    "query": "michkel",
    "fields": [ "last_name"] 

  }
}
}

我的索引名称是员工,它包含以下文档

{
   "first_name":"smith",
"last_name":"michkel",
"age":25,
"doj":"2015-05-2"
},
{
   "first_name":"john",
"last_name":"smith",
"age":46,
"doj":"1989-03-25"
}

当运行上面的查询时我得到了总记录,但我的要求是如果我给出“查询”:“michkel”这样,那么只有一条记录与我的文档匹配。 尽快给我解决方案 还有一个问题 我想根据用户给定的日期进行搜索。我的用户将给出这样的日期,如1989-04-15。为此我写如下     {     “查询”:{       “ 请求参数” : {         “查询”:“1989-04-15”,

  }
}
}
{"error":"SearchPhaseExecutionException[Failed to execute phase [query_fetch], all shards failed; shardFailures {[du1Tb7U8QLWSnXO2m9ATCg][employee][0]: SearchParseException[[employee][0]: from[-1],size[-1]: Parse Failure [Failed to parse source [{\n\"query\":{\n  \" query_string\" : {\n    \"query\": \"1989-04-15\",\n\n  }\n}\n}]]]; nested: QueryParsingException[[employee] No query registered for [ query_string]]; }]","status":400}

1 个答案:

答案 0 :(得分:1)

而不是multi_match使用bool过滤器,如下所示:

{
    "query": {
        "filtered": {
            "query": {
                "bool": {
                    "must": [
                        {
                            "match": {
                                "last_name": "michkel"
                            }
                        }
                    ]
                }
            }
        }
    }
}

根据您编辑过的问题,您应该在匹配替换中使用与"doj": "1989-04-15"相同的内容,并且如果您想查找同时更换last_namedoj,请使用以下查询:

{
    "query": {
        "filtered": {
            "query": {
                "bool": {
                    "should": [
                        {
                            "query_string": {
                                "query": "1989-04-15"
                            }
                        }
                    ],
                    "must": [
                        {
                            "match": {
                                "last_name": "michkel"
                            }
                        }
                    ]
                }
            }
        }
    }
}