gpt4 book ai didi

elasticsearch - 如何在Elasticsearch中创建包含分析和未分析字段的嵌套AND + OR查询?

转载 作者:行者123 更新时间:2023-12-03 01:47:23 25 4
gpt4 key购买 nike

假设我有A,B和C这三个字段。C是存储电子邮件的已分析字段,我需要完全匹配。

用SQL术语来说,我需要编写一个查询,例如

select * from table where A = '123' OR (B = '456' AND A = '' ) OR ( C = 'abc@xyz.com' AND A = '' AND B = '');

第一次尝试时,我在下面编写了查询,但是出现了Parse异常错误。
No filter registered for [match]];

一旦使用match查询删除该块,我就会开始获得结果,这使我假设我无法以这种方式编写查询。

如果您有任何建议,请告诉我。
{   "size": 25,   "query": {
"filtered": {
"filter":{
"or":[
{"term": {"A": "123"}},
{
"and":[
{"term": {"B": "456"}},
{"term": {"A": ""}}
]
},
{
"and":[
{
"match":{
"C":{
"query": "abc@xyz.com",
"operator": "AND"
}
}
},
{"term": {"A": ""}},
{"term": {"B": ""}}
]
}
]
}
} } }

最佳答案

你可以读一本https://www.elastic.co/guide/en/elasticsearch/guide/current/combining-filters.html
它应该可以帮助您。

SQL查询:

SELECT document
FROM products
WHERE productID = "KDKE-B-9947-#kL5"
OR (productID = "JODL-X-1937-#pV7" AND price = 30 )

ES查询:
{
"query" : {
"constant_score" : {
"filter" : {
"bool" : {
"should" : [
{ "term" : {"productID" : "KDKE-B-9947-#kL5"}},
{ "bool" : {
"must" : [
{ "term" : {"productID" : "JODL-X-1937-#pV7"}},
{ "term" : {"price" : 30}}
]
}
}
]
}
}
}
}
}

关于elasticsearch - 如何在Elasticsearch中创建包含分析和未分析字段的嵌套AND + OR查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42854317/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com