程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ElasticSearch:ElasticSearch中的IN等效运算符大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决ElasticSearch:ElasticSearch中的IN等效运算符?

开发过程中遇到ElasticSearch:ElasticSearch中的IN等效运算符的问题如何解决?下面主要结合日常开发的经验,给出你关于ElasticSearch:ElasticSearch中的IN等效运算符的解决方法建议,希望对你解决ElasticSearch:ElasticSearch中的IN等效运算符有所启发或帮助;

与克里斯建议的评论类似,类似的替换INterms过滤器 (查询暗示得分,这可能会改善返回的订单)。

SELECT * FROM table WHERE ID IN (1, 2, 3);

等效的Elasticsearch 1.x过滤器为:

{
  "query" : {
    "filtered" : {
      "filter" : {
        "terms" : {
          "ID" : [1, 2, 3]
        }
      }
    }
  }
}

等效的Elasticsearch 2.x +过滤器为:

{
  "query" : {
    "bool" : {
      "filter" : {
        "terms" : {
          "ID" : [1, 2, 3]
        }
      }
    }
  }
}

重要的一点是,terms过滤器(以及与此相关的查询)可以在完全匹配的情况下工作。它隐含地是一个or操作,类似于IN

如果要反转它,可以使用Not过滤器,但是我建议使用稍微冗长的bool/ @H_512_3@must_not过滤器(以养成也使用bool/@H_512_3@must和的习惯bool)。

{
  "query" : {
    "bool" : {
      "must_not" : {
        "terms" : {
          "ID" : [1, 2, 3]
        }
      }
    }
  }
}

总体而言,bool复合查询语法是Elasticsearch中最重要的过滤器之一,term(单数)和terms过滤器(复数)也是如此。

解决方法

我试图在SQL中找到与IN\ 等效的ElasticSearch查询NOT

我知道我们可以使用带有多个OR的QueryString查询来获得相同的答案,但这最终导致很多OR。

谁能分享这个例子?

大佬总结

以上是大佬教程为你收集整理的ElasticSearch:ElasticSearch中的IN等效运算符全部内容,希望文章能够帮你解决ElasticSearch:ElasticSearch中的IN等效运算符所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。