ElasticSearch:没有注册[match]的过滤器] [英] ElasticSearch: No filter registered for [match]]
本文介绍了ElasticSearch:没有注册[match]的过滤器]的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
{
query:{
match:{
name:network
}
},
facets:{
departments:{
条款:{
field:department_name
}
}
},
过滤器:{
bool:{
should:[
{match:{department_name:book}},
{match:{department_name 电子}}]
}
}
}
基本上,我希望以其名称检索匹配网络的所有产品,但仅过滤到 department_name
匹配 book
或 electronics
。当我执行此查询时,我收到此错误消息。
curl -X POSThttp:// localhost:9200 / products / _search?pretty = true-d'{
query:{
match:{
name:network
}
} ,
facets:{
departments:{
terms:{
field:department_name
}
}
过滤器:{
bool:{
should:[
{match:{department_name book}},
{match:{department_name:electronics}}]
}
}
}
'
{
error:SearchPhaseExecutionException [执行阶段[查询]失败,所有分片失败; shardFailures {[EaNRci0OSIqpA2EAPwAA6w] [products] [4]:SearchParseException [[products] [4]:query [name:network],from [-1],size [-1]:Parse Failure [无法解析源[{ \\\
\query\:{\\\
\match\:{\\\
\name \:\network\\\\
} \\\
} ,\\\
\facets\:{\\\
\departments \:{\\\
\terms\:{\\\
\field\:\ department_name \\\\
} \\\
} \\\
},\\\
\\\
\filter\:{\\\
\bool\:{\\\
\ should \:[\\\
{\match\:{\department_name \:\book\}},\\\
{\match\ {\department_name\:\electronics \}}] \\\
} \\\
} \\\
} \\\
]]];嵌套:QueryParsingException [[products]没有注册[match]的过滤器]; } [[EaNRci0OSIqpA2EAPwAA6w] [product] [0]:SearchParseException [[products] [0]:query [name:network],from [-1],size [-1]:Parse Failure [ \\ n \query\:{\\\
\match\:{\\\
\name \:\network\\\\
} \\\
} \\\
\facets\:{\\\
\departments \:{\\\
\terms\:{\\\
\field\:\ department_name \\\\
} \\\
} \\\
},\\\
\\\
\filter\:{\\\
\bool\:{\\\
\ should \:[\\\
{\match\:{\department_name \:\book\}},\\\ {\match\ \department_name \:\electronics \}}] \\\
} \\\
} \\\
} \\\
]]];嵌套:QueryParsingException [[products]没有注册[match]的过滤器]; } [[EaNRci0OSIqpA2EAPwAA6w] [product] [1]:SearchParseException [[products] [1]:query [name:network],from [-1],size [-1]:Parse Failure [解析源[ \\ n \query\:{\\\
\match\:{\\\
\name \:\network\\\\
} \\\
} \\\
\facets\:{\\\
\departments \:{\\\
\terms\:{\\\
\field\:\ department_name \\\\
} \\\
} \\\
},\\\
\\\
\filter\:{\\\
\bool\:{\\\
\ should \:[\\\
{\match\:{\department_name \:\book\}},\\\ {\match\ \department_name \:\electronics \}}] \\\
} \\\
} \\\
} \\\
]]];嵌套:QueryParsingException [[products]没有注册[match]的过滤器]; } [[EaNRci0OSIqpA2EAPwAA6w] [product] [2]:SearchParseException [[products] [2]:query [name:network],from [-1],size [-1]:Parse Failure [解析源[ \\ n \query\:{\\\
\match\:{\\\
\name \:\network\\\\
} \\\
} \\\
\facets\:{\\\
\departments \:{\\\
\terms\:{\\\
\field\:\ department_name \\\\
} \\\
} \\\
},\\\
\\\
\filter\:{\\\
\bool\:{\\\
\ should \:[\\\
{\match\:{\department_name \:\book\}},\\\ {\match\ \department_name \:\electronics \}}] \\\
} \\\
} \\\
} \\\
]]];嵌套:QueryParsingException [[products]没有注册[match]的过滤器]; } [[EaNRci0OSIqpA2EAPwAA6w] [product] [3]:SearchParseException [[products] [3]:query [name:network],from [-1],size [-1]:Parse Failure [解析源[ \\ n \query\:{\\\
\match\:{\\\
\name \:\network\\\\
} \\\
} \\\
\facets\:{\\\
\departments \:{\\\
\terms\:{\\\
\field\:\ department_name \\\\
} \\\
} \\\
},\\\
\\\
\filter\:{\\\
\bool\:{\\\
\ should \:[\\\
{\match\:{\department_name \:\book\}},\\\ {\match\ \department_name \:\electronics \}}] \\\
} \\\
} \\\
} \\\
]]];嵌套:QueryParsingException [[products]没有注册[match]的过滤器]; }],
状态:400
}
这里的关键是 QueryParsingException [[产品]没有注册[匹配]]的过滤器
,但不明白这里有什么问题。
解决方案
匹配
是一个查询,而不是过滤器。
在这种情况下,可能需要术语
-filter。
I'm trying to do this query to my ElasticSearch Server.
{
"query" : {
"match" : {
"name" : "network"
}
},
"facets" : {
"departments" : {
"terms" : {
"field" : "department_name"
}
}
},
"filter" : {
"bool": {
"should": [
{ "match" : {"department_name" : "book"}},
{ "match" : {"department_name" : "electronics"}}]
}
}
}
Basically, I wish to retrieve all the products that match "network" in its name, but filtering only to those which department_name
matches either book
or electronics
. When I perform this query, I receive this error message.
curl -X POST "http://localhost:9200/products/_search?pretty=true" -d '{
"query" : {
"match" : {
"name" : "network"
}
},
"facets" : {
"departments" : {
"terms" : {
"field" : "department_name"
}
}
},
"filter" : {
"bool": {
"should": [
{ "match" : {"department_name" : "book"}},
{ "match" : {"department_name" : "electronics"}}]
}
}
}
'
{
"error" : "SearchPhaseExecutionException[Failed to execute phase [query], all shards failed; shardFailures {[EaNRci0OSIqpA2EAPwAA6w][products][4]: SearchParseException[[products][4]: query[name:network],from[-1],size[-1]: Parse Failure [Failed to parse source [{\n \"query\" : {\n \"match\" : {\n \"name\" : \"network\"\n }\n },\n \"facets\" : {\n \"departments\" : { \n \"terms\" : {\n \"field\" : \"department_name\"\n } \n }\n },\n\n \"filter\" : {\n \"bool\": {\n \"should\": [\n { \"match\" : {\"department_name\" : \"book\"}},\n { \"match\" : {\"department_name\" : \"electronics\"}}] \n } \n }\n}\n]]]; nested: QueryParsingException[[products] No filter registered for [match]]; }{[EaNRci0OSIqpA2EAPwAA6w][products][0]: SearchParseException[[products][0]: query[name:network],from[-1],size[-1]: Parse Failure [Failed to parse source [{\n \"query\" : {\n \"match\" : {\n \"name\" : \"network\"\n }\n },\n \"facets\" : {\n \"departments\" : { \n \"terms\" : {\n \"field\" : \"department_name\"\n } \n }\n },\n\n \"filter\" : {\n \"bool\": {\n \"should\": [\n { \"match\" : {\"department_name\" : \"book\"}},\n { \"match\" : {\"department_name\" : \"electronics\"}}] \n } \n }\n}\n]]]; nested: QueryParsingException[[products] No filter registered for [match]]; }{[EaNRci0OSIqpA2EAPwAA6w][products][1]: SearchParseException[[products][1]: query[name:network],from[-1],size[-1]: Parse Failure [Failed to parse source [{\n \"query\" : {\n \"match\" : {\n \"name\" : \"network\"\n }\n },\n \"facets\" : {\n \"departments\" : { \n \"terms\" : {\n \"field\" : \"department_name\"\n } \n }\n },\n\n \"filter\" : {\n \"bool\": {\n \"should\": [\n { \"match\" : {\"department_name\" : \"book\"}},\n { \"match\" : {\"department_name\" : \"electronics\"}}] \n } \n }\n}\n]]]; nested: QueryParsingException[[products] No filter registered for [match]]; }{[EaNRci0OSIqpA2EAPwAA6w][products][2]: SearchParseException[[products][2]: query[name:network],from[-1],size[-1]: Parse Failure [Failed to parse source [{\n \"query\" : {\n \"match\" : {\n \"name\" : \"network\"\n }\n },\n \"facets\" : {\n \"departments\" : { \n \"terms\" : {\n \"field\" : \"department_name\"\n } \n }\n },\n\n \"filter\" : {\n \"bool\": {\n \"should\": [\n { \"match\" : {\"department_name\" : \"book\"}},\n { \"match\" : {\"department_name\" : \"electronics\"}}] \n } \n }\n}\n]]]; nested: QueryParsingException[[products] No filter registered for [match]]; }{[EaNRci0OSIqpA2EAPwAA6w][products][3]: SearchParseException[[products][3]: query[name:network],from[-1],size[-1]: Parse Failure [Failed to parse source [{\n \"query\" : {\n \"match\" : {\n \"name\" : \"network\"\n }\n },\n \"facets\" : {\n \"departments\" : { \n \"terms\" : {\n \"field\" : \"department_name\"\n } \n }\n },\n\n \"filter\" : {\n \"bool\": {\n \"should\": [\n { \"match\" : {\"department_name\" : \"book\"}},\n { \"match\" : {\"department_name\" : \"electronics\"}}] \n } \n }\n}\n]]]; nested: QueryParsingException[[products] No filter registered for [match]]; }]",
"status" : 400
}
I suppose the key here is QueryParsingException[[products] No filter registered for [match]]
, but cannot understand what's wrong here.
解决方案
match
is a query, not a filter.
You probably want the term
-filter in this case.
这篇关于ElasticSearch:没有注册[match]的过滤器]的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文