我对我的审计项目的通用查询感到困惑,该项目包含超过一百万条记录。是否有使用我的php或jquery代码生成的通用查询?我所能得到的就是到这里,我使用AND
,OR
运营商来做同样的事情:
{
"filter": {
"AND": {
"filters": [
{
"term": {
"age": "28"
}
}
]
},
"OR": {
"filters": [
{
"term": {
"name": "varsh"
}
}
]
}
}
}
有什么办法让我可以使用任何运算符和任何字段来搜索?我的UI看起来像这个
答案 0 :(得分:0)
我们的应用程序采用了相同的方法。用户可以使用类似的UI构建自己的查询(唯一的区别是我们有子组,因此您可以使用嵌套查询。)
我们使用AST来存储用户查询,例如:
["a",["o",[{"t":"generic.content","o":"contains","a":"@username"},{"t":"generic.content","o":"contains","a":"#username"]],["a",[{"t":"generic.content","o":"contains","a":"other thing"},{"t":"generic.content","o":"contains","a":"yet another thing"}]],["o",[{"t":"generic.lang","o":"equals_lang","a":"fr"},{"t":"generic.lang","o":"equals_lang","a":"en"}]]]
其中[" a",[]]是带AND运算符的组,[" o",[]]是带OR运算符的组。
然后我们使用此AST动态地使用bool查询(http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html)构建Elasticsearch查询。
在我们的格式中,否定是操作员级别的句柄(包含vs!contains),但你可以有一组NOT运算符,如[" n",[]]