ElasticSearch 8.6
下面是我的索引:
第1个示例
_source" : {
"fieldA" : "M",
"fieldB" : "SHOWER PACK",
"fieldC" : "false",
"fieldD" : "01",
"fieldE" : "true",
"fieldArrayA" : [ "val1","val2", "val3"]
}
我想查询我的索引并得到类似于
IF fieldArrayA.length > 0 and val1 in fieldArrayA, THEN true ELSE false
因此,我想知道是否可以请求我的索引以获得以下结果:
_source" : {
"fieldA" : "M",
"fieldB" : "SHOWER PACK",
"fieldC" : "false",
"fieldD" : "01",
"fieldE" : "true",
"fieldArrayA_as_boolean" : true
}
什么是ElasticSearch查询?
第2个示例:
POST tly-idx_test1/_doc
{
"fieldA": "M",
"fieldB": "SHOWER PACK",
"fieldC": "false",
"fieldD": "01",
"fieldE": "true",
"fieldArrayA": [
"val1",
"val2",
"val3"
],
"fieldArrayB": [
{"fieldB1":"val1"},
{"fieldB1":"val2"},
{"fieldB1":"val3"}
]
}
Map如下:
PUT tly-idx_test1
{
"mappings": {
"properties": {
"fieldA": {
"type": "text"
},
"fieldArrayA": {
"type": "keyword"
},
"fieldArrayB": {
"type": "nested",
"properties": {
"fieldB1": {
"type": "keyword",
"fields": {
"text": {
"type": "text",
"analyzer": "standard"
}
}
}
}
},
"fieldB": {
"type": "text"
},
"fieldC": {
"type": "text"
},
"fieldD": {
"type": "text"
},
"fieldE": {
"type": "boolean"
}
}
}
}
如何获得以下结果
IF fieldArrayB.length > 0 and val1 in fieldArrayB, THEN true ELSE false
?
_source" : {
"fieldA" : "M",
"fieldB" : "SHOWER PACK",
"fieldC" : "false",
"fieldD" : "01",
"fieldE" : "true",
"fieldArrayB_as_boolean" : true
}
谢谢
1条答案
按热度按时间gwbalxhn1#
您可以尝试使用脚本字段。
你想要的只能通过脚本使用Elasticsearch。然而,不建议使用脚本,因为它们不具有性能。另一种选择是使用Terms Query进行查询,但你没有你想要的字段“fieldArrayA_as_boolean”。
您仍然可以接收术语查询的结果,并在您的应用程序中创建一个逻辑,以便在您的答案中添加此字段,从长远来看,这将是更好的想法。
索引:
质询:
Terms Query示例