gpt4 book ai didi

html - Elasticsearch上的短语和通配符查询

转载 作者:行者123 更新时间:2023-12-03 00:50:12 27 4
gpt4 key购买 nike

在尝试创建只能匹配整个短语但也允许使用通配符的查询时,我遇到了一些困难。

基本上,我有一个包含字符串的文件(它实际上是一个字符串列表,但为简单起见,我跳过了它),该文件可以包含空格或为null,可以将其称为“颜色”。

例如:

{
...
"color": "Dull carmine pink"
...
}

我的查询需要能够执行以下操作:
  • 搜索空值(包含和排除)
  • 搜索非空值(包含和排除)
  • 仅搜索和匹配整个短语(包括和排除)。例如:
  • 暗红色胭脂红->匹配
  • 胭脂红粉->不匹配
  • 与上一个相同,但带有通配符(包括和不包括)。例如:
  • ?ull胭脂红p *->匹配“Dull胭脂红”
  • 暗红色胭脂红*->匹配“暗红色胭脂红”

  • 几天来,我一直在撞墙,我尝试了几乎所有我能想到的查询类型。

    我只能通过 this topic使其与span_near查询一起部分工作。

    所以基本上我现在可以:
  • 使用/不使用通配符搜索整个短语,如下所示:
    {
    "span_near": {
    "clauses": [
    {
    "span_term": {"color": "dull"}
    },
    {
    "span_term": {"color": "carmine"}
    },
    {
    "span_multi": {"match": {"wildcard": {"color": "p*"}}}
    }
    ],
    "slop": 0,
    "in_order": true
    }
    }
  • 通过像这样的简单must / must_not查询来搜索空值(包括和排除):
    {
    "must" / "must_not": {'exist': {'field': 'color'}}
    }

  • 问题:
    我找不到一种使独占范围查询的方法。我能找到的唯一方法是 this。但这需要包括和排除两个字段,而我只想排除某些字段,必须返回所有其他字段。是否有一些类似于“match_all”:{}查询的类比,可以在span_not的include字段内使用?还是全新,更优雅的解决方案?

    最佳答案

    我在一个月前找到了解决方案,但忘了在此处发布。
    我手头没有一个例子,但我会尽力解释。
    问题是我要查询的字段在查询之前已由Elasticsearch分析。有问题的分析器将它们除以空格等。此问题的解决方案是两个解决方案之一:
    1. 如果未对索引使用自定义映射。
    (表示您让 flex 搜索在添加字段时为字段动态创建适当的映射)。
    在这种情况下, flex 搜索会自动创建文本字段的子字段,称为“关键字”。该子字段使用“关键字”分析器,该分析器在查询之前不会以任何方式处理数据。
    这意味着查询如下:

    {
    "query": {
    "bool": {
    "must": [ // must_not
    {
    "match": {
    "user.keyword": "Kim Chy"
    }
    }
    ]
    }
    }
    }
    {
    "query": {
    "bool": {
    "must": [ // must_not
    {
    "wildcard": {
    "user.keyword": "Kim*y"
    }
    }
    ]
    }
    }
    }
    应该能按预期工作。
    但是,使用默认映射时,关键字字段很可能区分大小写。为了使它也不区分大小写,您将需要创建一个自定义映射,在匹配之前将小写(或大写) 规范化器应用于查询和关键字字段。
    2.如果使用自定义映射
    基本上与上述相同,但是您将必须手动创建一个新的子字段(或字段),该子字段使用关键字分析器(可能还需要规格化器,以便不区分大小写)。
    P.S. 据我所知,在Elasticsearch中不再可能更改映射。这意味着您将必须使用适当的映射来创建新索引,然后将数据重新索引为新索引。

    关于html - Elasticsearch上的短语和通配符查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54894026/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com