我有一个看起来像这样的文件:
{
"foo": {
"orgnr": "1"
},
"bar": {
"orgnr" : "2"
},
"created": "2015-02-12",
...
}
我有一个API,用户可以在其中查询:
Orgnr 必须与 foo.orgnr或bar.orgnr匹配,然后才能进行很多其他字段和文本查询。我匹配此查询字符串查询。因此,对于orgnr为1的请求,将生成以下查询字符串:
例如,其余查询可以在哪里
但是我不确定这实际上是正确的方法还是这样做。读https://www.elastic.co/guide/en/elasticsearch/guide/current/_queries_and_filters.html使我不安全。
我也可以使用 bool(boolean) 型匹配,对于orgnr必须使用。
使用role:BAR将生成以下查询:
这里最重要的是orgnr实际上与foo OR bar orgnr相匹配。
还是应该为此使用过滤器?
最佳答案
bool query in filter context是执行此操作的一种好方法。应该至少需要一个子句才能匹配。
POST _search
{
"query": {
"constant_score": {
"filter": {
"bool": {
"should": [
{
"term": {
"foo.orgnr": "1"
}
},
{
"term": {
"bar.orgnr": "1"
}
}
]
}
}
}
}
}
关于elasticsearch - Elasticsearch-查询构建-这是正确的方法吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39654030/