我需要像这样翻译简单的SQL:
"and"
进入elasticsearch查询。
我提出了一个查询(在下面发布)看起来像是在做我需要做的事情,但是我无法在SQL的第一个()中创建{
"query": {
"filtered": {
"filter": {
"bool": {
"should": [
{
"terms": {
"abc1": [x, y, z]
}
},
{
"terms": {
"abc2": [x, y, z]
}
},
{
"terms": {
"abc3": [x, y, z]
}
},
]
}
},
"query": {
"bool": {
"must": [
{
"terms": {
"abc7": [x, y, z]
}
},
{
"nested": {
"path": "nestedpath",
"query": {
"bool": {
"must": [
{
"range": {
"nestedpath.abc6": {
"lt": 5
}
}
}
]
}
}
}
}
]
}
}
}
}
}
部分。在尝试使用JSON时,我一直在获取弹性搜索错误或没有结果。我认为正确的答案是使用带有"_source": {
"group": {
"abc1": "x",
"abc2": "y",
"abc3": "z"
},
"anotherGroup": {
"abc4": "y",
"abc5": "z"
},
"nestedpath": [
{
"abc6": 2
}
],
"abc7": "x"
}
密钥的过滤查询,但我无法找到正确的变体。
有人可以帮帮我吗?我正在失去希望,同时试图解决这个问题大约一个星期。或者你能否至少告诉我,如果我正朝着正确的方向解决这个问题?非常感谢你。
{{1}}
这样的事情应该是匹配的:
{{1}}
答案 0 :(得分:0)
如果你的映射是这样的:
{
"test7" : {
"mappings" : {
"my_type3" : {
"properties" : {
"abc7" : {
"type" : "string"
},
"anothergroup" : {
"properties" : {
"abc4" : {
"type" : "string"
},
"abc5" : {
"type" : "string"
}
}
},
"group" : {
"properties" : {
"abc1" : {
"type" : "string"
},
"abc2" : {
"type" : "string"
},
"abc3" : {
"type" : "string"
}
}
},
"nestedpath" : {
"type" : "nested",
"properties" : {
"abc6" : {
"type" : "long"
}
}
}
}
}
}
}
}
此查询将符合您的要求:
{
"query":{
"filtered":{
"filter":{
"bool":{
"must":[
{
"bool":{
"should":[
{
"terms":{
"group.abc1":[
"x",
"y",
"z"
]
}
},
{
"terms":{
"group.abc2":[
"x",
"y",
"z"
]
}
},
{
"terms":{
"group.abc3":[
"x",
"y",
"z"
]
}
}
]
}
},
{
"bool":{
"should":[
{
"terms":{
"anothergroup.abc4":[
"x",
"y",
"z"
]
}
},
{
"terms":{
"anothergroup.abc5":[
"x",
"y",
"z"
]
}
}
]
}
},
{
"nested":{
"path":"nestedpath",
"query":{
"bool":{
"must":{
"range":{
"nestedpath.abc6":{
"lt":5
}
}
}
}
}
}
},
{
"terms":{
"abc7":[
"x",
"y",
"z"
]
}
}
]
}
}
}
}
}
答案 1 :(得分:0)
使用POST / _xpack / sql / translate, U可以在ES上运行sql,并且U可以将sql转换为ES查询 参见:[https://www.elastic.co/blog/an-introduction-to-elasticsearch-sql-with-practical-examples-part-1]