我是弹性搜索的新手。我的clearance
表格中有一个字段名称users
,我正在尝试根据此结果过滤我的结果。
match: {
clearance: {
query: 'None',
type: 'phrase'
}
}
当我给出上述匹配查询时,我得到3个结果。我想要的是再传递一个字符串和None
。例如,我想找到具有许可None
和First Level
我试过了。
multi_match: {
clearance: {
query: 'None OR First Level',
type: 'phrase'
}
}
但最终出现了一些错误。请帮忙。如果我的问题是错误的,请纠正我。
答案 0 :(得分:0)
一种方法是在映射中使用not_analyzed字段进行清除并使用术语过滤器。
示例:
create or replace function getdate
RETURN VARCHAR2 IS
v_datevalue date;
begin
v_datevalue := '01-APR-2015';
return (cast(v_datevalue as varchar2));
end;
/
一些测试数据:
PUT test
{
"mappings": {
"e1":{
"properties": {
"clearance":{
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
现在查询部分:
PUT test/e1/1
{
"clearance":"None"
}
PUT test/e1/2
{
"clearance":"First Level"
}
PUT test/e1/3
{
"clearance":"Second Level"
}
结果验证:
GET test/e1/_search
{
"query": {
"filtered": {
"query": {
"match_all": {}
},
"filter": {
"terms": {
"clearance": [
"None",
"First Level"
],
"execution": "or"
}
}
}
}
}