我尝试在elasticsearch lucene查询中创建类似于kibana查询的查询。我基本上想要做的是匹配一些短语。例如;我的kibana查询看起来像这样:(+" anna smith")和((+"大学"),(+"主席"),(+" ;女性权利"))它搜索" anna smith"必须和其他一个短语应该(应该至少有一个短语存在于文本中)。我写了一个查询来执行此操作,但它提供了" elasticsearch解析异常:期望的字段名称但得到了start_object"。我该怎么解决这个问题。这是我的询问;
{
"query": {
"bool": {
"must": {
"match": {
"text": {
"query": "anna smith",
"operator": "and"
}
}
}
},
"query": {
"bool": {
"must": [
{
"bool": {
"should": [
{
"match": {
"text": {
"query": "university",
"boost": 2
}
}
},
{
"match": {
"text": {
"query": "chairman",
"boost": 2
}
}
}
]
}
}]
}}}}
答案 0 :(得分:1)
您在底部的第二个查询不能存在,它需要位于第一个bool/must
之内
{
"query": {
"bool": {
"must": [
{
"match": {
"text": {
"query": "anna smith",
"operator": "and"
}
}
},
{
"bool": {
"should": [
{
"match": {
"text": {
"query": "university",
"boost": 2
}
}
},
{
"match": {
"text": {
"query": "chairman",
"boost": 2
}
}
}
]
}
}
]
}
}
}