elasticsearch - 是否有用于索引/搜索序数作为数值的过滤器?

标签 elasticsearch

我想索引和搜索第 101、第 101 等,如 101、102 等。ElasticSearch 是否有一个过滤器可以做到这一点?

最佳答案

您可以简单地使用 pattern_replace char 过滤器,创建像 101 这样的标记, 102来自文本101st , 101nd102 .

我创建了一个自定义分析器,它删除了文本并只保留了数字,以便搜索 100 , 102 10匹配倒排索引中的标记并出现在搜索结果中。

工作示例

使用 pattern_replace 的自定义分析器的索引 def。

{
    "settings": {
        "analysis": {
            "analyzer": {
                "my_analyzer": {
                    "tokenizer": "standard",
                    "char_filter": [
                        "my_char_filter"
                    ],
                    "filter": [
                        "lowercase"
                    ]
                }
            },
            "char_filter": {
                "my_char_filter": {
                    "type": "pattern_replace",
                    "pattern": "[a-z]+", --> note this
                    "replacement": ""
                }
            }
        }
    }
}

测试一下 custom-analyzer使用 analyze API .
POST /{your-index-name}/_analyze

    {
        "analyzer": "my_analyzer",
        "text": "101nd"
    }

{
    "tokens": [
        {
            "token": "101",
            "start_offset": 0,
            "end_offset": 5,
            "type": "<NUM>",
            "position": 0
        }
    ]
}

另一个样本

POST/{您的索引名称}/_analyze
{
    "analyzer": "my_analyzer",
    "text": "102st"
}

{
    "tokens": [
        {
            "token": "102",
            "start_offset": 0,
            "end_offset": 5,
            "type": "<NUM>",
            "position": 0
        }
    ]
}

关于elasticsearch - 是否有用于索引/搜索序数作为数值的过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61106622/

相关文章:

python - 无法 pickle _thread.rlock 对象 Pyspark 向 elasticsearch 发送请求

lucene - 查询嵌套文档中的缺失字段

regex - Elasticsearch - 搜索跨越 2 个单词的子字符串

python - level必须是整数,elasticsearch报错

elasticsearch - 在 ELK 中配置 number_of_shards 和 number_of_replicas

elasticsearch - 如何对 Elasticsearch 5.3 查询请求进行统计?

elasticsearch - Couchbase全文本搜索和复合键

csv - Logstash成功启动但不起作用

elasticsearch - 使用 SSL/TLS 保护 Kibana 和 elasticsearch

ruby-on-rails-3 - 无法在circleci中运行 Elasticsearch 以使我的rspec能够通过Elasticsearch?