当前位置: 首页 > 面试题库 >

elasticsearch:匹配其数组包含此字段的文档

司空通
2023-03-14
问题内容

我有一个与此类似的文件:

{
name: "bob",
contains: ["a", "b", "c"]
},
{
name: "mary",
contains: ["a", "b"]
},
{
name: "Jason",
contains: ["b"]
}

我要查询以查找所有包含“ a”的人(鲍勃和玛丽)。如何编写查询?

编辑:

当前查询:

                query: {
                bool: {
                    must: [
                        { match: { exists: "yes" }},
                        { term: {contains: "a"}}
                    ],
                    must_not: [
                        { match: { status: "removed"}}
                    ]

                }
            }

问题答案:

contains字段上使用术语过滤器/查询(例如){term: {contains: "a"}}可以满足您的需求。假设您只想匹配满足该条件的任何文档,则完整查询将类似于:

{
  "query": {
    "filtered": {
      "filter": {
        "term": {
          "contains": "a"
        }
      }
    }
  }
}

之所以可行,是因为值数组是分别索引的,并且如果查询的字段是列表,则术语查询将查找包含包含该值的数组的文档。



 类似资料:
  • 来自< code>$elementMatch的MongoDB文档: $elemMatch运算符将包含数组字段的文档与至少一个与所有指定查询条件匹配的元素匹配。 但是,如何将包含数组字段的文档与与查询匹配的所有元素进行匹配? 例如,我有这样的文档: 我需要匹配所有具有所有 如果我使用以下查询: 该文档将被匹配,因为至少有一个价格 我也试过这个,但它似乎不工作: 有没有办法排除查看所有价格而不是至少一

  • 我使用elasticsearch创建了一个程序,允许在文本中找到引用圣经的所有地方,以及提到经文的地方。我在elasticsearch中索引了圣经的所有经文,当我通过部分键入经文进行搜索时,每一经文都是一个文档,我找到了正确的结果(即使出错)如何浏览文本来找到引用经文(甚至部分)的所有地方,从而将经文的来源归因于他们?和容忍错误(我想用模糊性参数或使用同义词) 我的索引示例: 我需要找到索引中的段

  • 问题内容: 我有一个列表,数组或您熟悉的任何一种语言。例如,names:如果与这些名称之一匹配,我想查询该字段。 一种方法是使用OR过滤器。例如 有什么更好的办法吗?如果它是查询,则比过滤器更好。 问题答案: 哪一个Elasticsearch会像您曾经使用过的那样重写 在大多数情况下,使用布尔型过滤器时,使用过滤器比或更好。原因在Elasticsearch博客中进行了解释:http://www.e

  • 我试图在ElasticSearch中运行类似的字段查询:

  • 如何使elasticsearch查询返回没有_internal字段的结果,如_index、_type? 原因:对于几个页面,我使用AJAX调用来获取结果,而不是在服务器上呈现整个网页。但是为每个文档公开_index&_type内部字段不仅是冗余的(带宽),而且还暴露了索引和类型名称(安全问题)。 请救命!

  • 问题内容: 我正在尝试在ElasticSearch中运行类似的字段查询: 意思是我正在尝试查找所有文档,其中产品名称在这种情况下是’milk’的子字符串。 我该怎么做? 问题答案: 我会使用一个使用ngrams的自定义分析器。首先创建一个像这样的索引: 然后,您可以索引一些数据: 最后,您可以像这样搜索: 然后您将获得前两个文档,