我已经阅读了一段时间的弹性搜索查询,文档似乎对我的一些查询没有帮助。 我正在尝试获取
的文件((Field1=Keyword1 OR Field2=Keyword1) AND (Field1=Keyword2 OR Field2=Keyword2)) AND (Field3=Keyword3 ) AND (Field4!=Keyword4)).
我提到的文件是 https://dzone.com/articles/23-useful-elasticsearch-example-queries当尝试在Chrome中的感知API扩展程序中执行某些查询时,其中存在语法错误。 例如:
{
"query": {
"bool": {
"must": {
"bool" : { "should": [
{ "match": { "title": "Elasticsearch" }},
{ "match": { "title": "Solr" }} ] }
},
"must": { "match": { "authors": "clinton gormely" }},
"must_not": { "match": {"authors": "radu gheorge" }}
}
}
}
它给出了“Duplicate Must。语法错误”。
你能帮忙形成我的查询吗?
感谢。
答案 0 :(得分:1)
你必须在同一级别两次。试试这个
{
"query": {
"bool": {
"must": [{
"bool" : { "should": [
{ "match": { "title": "Elasticsearch" }},
{ "match": { "title": "Solr" }} ] }
}, { "match": { "authors": "clinton gormely" }}],
"must_not": { "match": {"authors": "radu gheorge" }}
}
}
}
答案 1 :(得分:0)
正如Volodymyr的回答中所提到的,您的查询必须包含2个必须处于同一级别的错误。查看this文档以满足您的要求。
必须:所有这些条款必须匹配。相当于AND。
must_not:所有这些条款都不匹配。相当于NOT。
这些条款中至少有一个必须匹配。相当于OR。
filter:必须匹配但在非评分过滤模式下运行的子句。