gpt4 book ai didi

elasticsearch - 如何在 Elasticsearch 中用空格分隔和不带空格进行搜索

转载 作者:行者123 更新时间:2023-12-03 23:40:14 32 4
gpt4 key购买 nike

我的查询如下

  • 我正在寻找 L1 L2在具有一些聚合函数的 Elasticsearch 集群中
  • 我正在转换 L1 L2到 L1 或 L2

  • 要求
  • 我需要搜索 L1 L2第一(高权重)
  • 然后我需要搜索 L1L2分别地。

  • 我的模板在下面需要更新 'query': '**L1* OR *L2**
    template =  {
    'from': 0,
    'size': 10,
    'aggs': {
    'Tester': {
    'terms': {
    'field': 'Tester.name.keyword',
    'order': {
    '_key': 'desc'
    }
    }
    },
    'Developer': {
    'terms': {
    'field': 'Developer.name.keyword',
    'order': {
    '_key': 'desc'
    }
    }
    },
    'Analyst': {
    'terms': {
    'field': 'Analyst.name.keyword',
    'order': {
    '_key': 'desc'
    }
    }
    }
    },
    'query': {
    'bool': {
    'must': {
    'query_string': {
    'query': '**L1* OR *L2**'
    }
    },
    'filter': {
    'term': {
    'parentName.keyword': 'Software Department'
    }
    }
    }
    }
    }
    有没有办法在不改变设置的情况下实现

    最佳答案

    正如@David 在评论中所建议的,您可以使用 shingles token filter实现您的用例。
    添加一个工作示例,它清楚地显示了包含 L1 L2 的文档的更高分数而 L1L2文档也会出现在搜索结果中。
    索引映射

    {
    "settings": {
    "analysis": {
    "analyzer": {
    "my_analyzer": {
    "type": "custom",
    "tokenizer": "whitespace",
    "filter": [
    "shingle"
    ]
    }
    }
    }
    },
    "mappings": {
    "properties": {
    "name": {
    "type": "text",
    "analyzer": "my_analyzer"
    }
    }
    }
    }
    索引示例文档
    {
    "name" : "L1 L2"
    }

    {
    "name" : "L1"
    }
    {
    "name" : "L2"
    }
    搜索查询
    {
    "query": {
    "match": {
    "name": "L1 L2"
    }
    }
    }
    并搜索回复
     "hits": [
    {
    "_index": "shingleside",
    "_type": "_doc",
    "_id": "1",
    "_score": 1.0462961,
    "_source": {
    "name": "L1 L2"
    }
    },
    {
    "_index": "shingleside",
    "_type": "_doc",
    "_id": "2",
    "_score": 0.5619608,
    "_source": {
    "name": "L1"
    }
    },
    {
    "_index": "shingleside",
    "_type": "_doc",
    "_id": "3",
    "_score": 0.5619608,
    "_source": {
    "name": "L2"
    }
    }
    ]

    关于elasticsearch - 如何在 Elasticsearch 中用空格分隔和不带空格进行搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66131406/

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