【问题标题】:OData services with Elastic search具有弹性搜索的 OData 服务
【发布时间】:2015-10-17 03:54:10
【问题描述】:

我是 OData 服务的新手。我编写了一个查询来检索具有空值的特定字段。我在 OData 中构建查询并将其传递给弹性搜索以检索数据。但查询似乎不起作用。

The query is as follows:
$filter=assignedToEM eq  null.
I have also tried giving as: $filter=assignedToEM eq  'null'

The query has been built as :
{
 "from" : 0,
 "size" : 15,
 "query":{
       "bool" : {
           "must_not" : {
                    "term" : {
                        "assignedToEM" : "null"
                               }
                         }
                 }
          }
 }
In elastic search schema,The not_null value for assignedToEM is given as "_null_".

It would be really helpful if i get a solution for this as soon as possible.
Thanks.

【问题讨论】:

标签: elasticsearch odata


【解决方案1】:

使用Olastic - 用于 Elasticsearch 的 OData 服务的开源实现。
您可以使用源作为示例或从maven获取依赖

【讨论】:

  • taras - 这是一个很棒的设计,但我想知道你是否打算尽快更新它?
  • @bigbadmouse 是的,我们会更新它,但我想不会在不久的将来
  • 如果您能帮助我解决一些问题,我很乐意尝试?
  • 当然,我会帮忙的。
  • 谢谢 - 我不介意做这项工作,我很乐意分享,但我可以使用一些指针(没有双关语)
【解决方案2】:

实现此目的的一种方法是使用特殊的 _missing_ 字段名称创建 query_string query,如下所示:

{
    "from": 0,
    "size": 15,
    "query": {
        "query_string": {
            "query": "_missing_:assignedToEM"
        }
    }
}

或者应该像这样使用NOT 运算符:

{
    "from": 0,
    "size": 15,
    "query": {
        "query_string": {
            "query": "NOT(assignedToEM:*)"
        }
    }
}

【讨论】:

  • 如果我错了请纠正我。缺少和存在过滤器用于弹性搜索对吗?既然查询是建立在OData端的,那么使用同一个过滤器可以吗?
  • 我从您的问题中了解到,您希望将 OData eq null 过滤器“翻译”成等效的 Elasticsearch 过滤器。我的建议正是这样做的。
  • @Nilafur 运气好吗?
  • 谢谢。此代码有效。我必须在 ODataService 端对代码进行更多修改才能使其正常工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-12
  • 2016-03-28
  • 2022-11-13
  • 2019-06-20
  • 1970-01-01
  • 2021-02-02
  • 2019-11-19
相关资源
最近更新 更多