Elasticsearch索引搜索货币美元和英镑符号

马克·罗布森

在我的某些文档中,我使用$或£符号。我想搜索£并检索包含该符号的文档。我已经阅读了文档,但出现了一些认知上的失调。

# Delete the `my_index` index
DELETE /my_index    

# Create a custom analyzer
PUT /my_index
{
  "settings": {
    "analysis": {
      "char_filter": {
        "&_to_and": {
          "type": "mapping",
          "mappings": [
            "&=> and ",
            "$=> dollar "
          ]
        }
      },
      "analyzer": {
        "my_analyzer": {
          "type": "custom",
          "char_filter": [
            "html_strip",
            "&_to_and"
          ],
          "tokenizer": "standard",
          "filter": [
            "lowercase"
          ]
        }
      }
    }
  }
}    

就像文档指出的那样,这将返回“ the”,“ quick”,“ and”,“ brown”,“ fox”:

# Test out the new analyzer
GET /my_index/_analyze?analyzer=my_analyzer&text=The%20quick%20%26%20brown%20fox    

这将返回“ the”,“ quick”,“ dollar”,“ brown”,“ fox”

GET /my_index/_analyze?analyzer=my_analyzer&text=The%20quick%20%24%20brown%20fox    

添加一些记录:

PUT /my_index/test/1
{
  "title": "The quick & fast fox"
}    

PUT /my_index/test/1
{
  "title": "The daft fox owes me $100"
}    

我本以为如果搜索“美元”,我会得到结果吗?相反,我没有任何结果:

GET /my_index/test/_search
{ "query": {
    "simple_query_string": {
      "query": "dollar"
    }
  }
}

甚至在分析器上使用“ $”:

GET /my_index/test/_search
{ "query": {
  "query_string": {
    "query": "dollar10",
    "analyzer": "my_analyzer"
  }
 }
}
阿尔珀特

您的问题是您指定了自定义分析器,但从未使用过。如果您使用术语转换器,则可以验证这一点。因此,请按照以下步骤操作:

在为标题字段创建自定义分析器并为其设置索引时:

GET /my_index

{
  "settings": {
    "analysis": {
      "char_filter": {
        "&_to_and": {
          "type": "mapping",
          "mappings": [
            "&=> and ",
            "$=> dollar "
          ]
        }
      },
      "analyzer": {
        "my_analyzer": {
          "type": "custom",
          "char_filter": [
            "html_strip",
            "&_to_and"
          ],
          "tokenizer": "standard",
          "filter": [
            "lowercase"
          ]
        }
      }
    }
  }, "mappings" :{
    "test" : {
      "properties" : {
        "title" : {
          "type":"string",
          "analyzer":"my_analyzer"
        }
      }
    }
  }
}

插入数据:

PUT my_index/test/1

{
  "title": "The daft fox owes me $100"
}

检查术语向量:

GET /my_index/test/1/_termvectors?fields=title

回复:

{
   "_index":"my_index",
   "_type":"test",
   "_id":"1",
   "_version":1,
   "found":true,
   "took":3,
   "term_vectors":{
      "title":{
         "field_statistics":{
            "sum_doc_freq":6,
            "doc_count":1,
            "sum_ttf":6
         },
         "terms":{
            "daft":{
               "term_freq":1,
               "tokens":[
                  {
                     "position":1,
                     "start_offset":4,
                     "end_offset":8
                  }
               ]
            },
            "dollar100":{       <-- You can see it here
               "term_freq":1,
               "tokens":[
                  {
                     "position":5,
                     "start_offset":21,
                     "end_offset":25
                  }
               ]
            },
            "fox":{
               "term_freq":1,
               "tokens":[
                  {
                     "position":2,
                     "start_offset":9,
                     "end_offset":12
                  }
               ]
            },
            "me":{
               "term_freq":1,
               "tokens":[
                  {
                     "position":4,
                     "start_offset":18,
                     "end_offset":20
                  }
               ]
            },
            "owes":{
               "term_freq":1,
               "tokens":[
                  {
                     "position":3,
                     "start_offset":13,
                     "end_offset":17
                  }
               ]
            },
            "the":{
               "term_freq":1,
               "tokens":[
                  {
                     "position":0,
                     "start_offset":0,
                     "end_offset":3
                  }
               ]
            }
         }
      }
   }
}

现在搜索:

GET /my_index/test/_search

{
  "query": {
    "match": {
      "title": "dollar100"
    }
  }
}

那会找到匹配的。但是用查询字符串搜索为:

GET /my_index/test/_search

{ "query": {
    "simple_query_string": {
      "query": "dollar100"
    }
  }
}

不会找到任何东西。因为它搜索特殊的_all字段。如我所见,由于未分析字段,因此会聚合字段:

GET /my_index/test/_search

{
  "query": {
    "match": {
      "_all": "dollar100"
    }
  }
}

找不到结果。但:

GET /my_index/test/_search

{
  "query": {
    "match": {
      "_all": "$100"
    }
  }
}

发现。我不确定,但是原因可能是默认分析器不是自定义分析器。要将自定义分析器设置为默认检查:

在ElasticSearch或LogStash中更改默认分析器

http://elasticsearch-users.115913.n3.nabble.com/How-we-can-change-Elasticsearch-default-analyzer-td4040411.html

http://grokbase.com/t/gg/elasticsearch/148kwsxzee/overriding-built-in-analyzer-and-set-it-as-default

http://elasticsearch-users.115913.n3.nabble.com/How-to-set-the-default-analyzer-td3935275.html

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Elasticsearch索引搜索货币美元和英镑符号

来自分类Dev

正则表达式提取英国货币,包括英镑符号和便士 (p)

来自分类Dev

MPDF PHP库不显示英镑货币符号£

来自分类Dev

d3.js nvd3问题:在工具提示中显示美元符号和货币格式

来自分类Dev

Elasticsearch按索引类型和字段搜索

来自分类Dev

如何使用没有货币符号或美元符号的货币格式

来自分类Dev

Twitter API,用美元符号搜索

来自分类Dev

后记英镑符号

来自分类Dev

Clojure —英镑符号的含义?

来自分类Dev

在Java中使用正则表达式从列分隔文件的字段中的货币字段中删除美元符号和逗号

来自分类Dev

在WordPress中使用美元符号和jQuery

来自分类Dev

在Elasticsearch中跨多个索引的自动完成和模糊搜索

来自分类Dev

在Swift中更改分组分隔符,货币符号和多种货币的货币符号位置

来自分类Dev

如果查找包含英镑符号的字符串,则搜索工作不正确

来自分类Dev

带有美元符号的熊猫列/索引值

来自分类Dev

使用Filehelpers库忽略十进制字段中的美元货币符号($)

来自分类Dev

当金额不是美元货币时,不要在前面加$符号

来自分类Dev

货币美元符号:更好地在SQL查询中连接,还是使用PHP?

来自分类Dev

从列值(印度货币)中删除美元符号Yii2 kartik gridview

来自分类Dev

英镑符号#define函数参数

来自分类Dev

在xtable中包含英镑符号

来自分类Dev

索引和匹配以进行货币转换

来自分类Dev

googlefinance中欧元和英镑的区块链eos的符号是什么

来自分类Dev

搜索引擎索引中的父/子关系(Rails 3.2和ElasticSearch> v1)

来自分类Dev

搜索引擎索引中的父/子关系(Rails 3.2和ElasticSearch> v1)

来自分类Dev

关于美元符号:美元符号内的美元符号?

来自分类Dev

货币检查是欧元还是美元

来自分类Dev

货币检查是欧元还是美元

来自分类Dev

在PHP中查找以美元符号$开头和结尾的单词

Related 相关文章

  1. 1

    Elasticsearch索引搜索货币美元和英镑符号

  2. 2

    正则表达式提取英国货币,包括英镑符号和便士 (p)

  3. 3

    MPDF PHP库不显示英镑货币符号£

  4. 4

    d3.js nvd3问题:在工具提示中显示美元符号和货币格式

  5. 5

    Elasticsearch按索引类型和字段搜索

  6. 6

    如何使用没有货币符号或美元符号的货币格式

  7. 7

    Twitter API,用美元符号搜索

  8. 8

    后记英镑符号

  9. 9

    Clojure —英镑符号的含义?

  10. 10

    在Java中使用正则表达式从列分隔文件的字段中的货币字段中删除美元符号和逗号

  11. 11

    在WordPress中使用美元符号和jQuery

  12. 12

    在Elasticsearch中跨多个索引的自动完成和模糊搜索

  13. 13

    在Swift中更改分组分隔符,货币符号和多种货币的货币符号位置

  14. 14

    如果查找包含英镑符号的字符串,则搜索工作不正确

  15. 15

    带有美元符号的熊猫列/索引值

  16. 16

    使用Filehelpers库忽略十进制字段中的美元货币符号($)

  17. 17

    当金额不是美元货币时,不要在前面加$符号

  18. 18

    货币美元符号:更好地在SQL查询中连接,还是使用PHP?

  19. 19

    从列值(印度货币)中删除美元符号Yii2 kartik gridview

  20. 20

    英镑符号#define函数参数

  21. 21

    在xtable中包含英镑符号

  22. 22

    索引和匹配以进行货币转换

  23. 23

    googlefinance中欧元和英镑的区块链eos的符号是什么

  24. 24

    搜索引擎索引中的父/子关系(Rails 3.2和ElasticSearch> v1)

  25. 25

    搜索引擎索引中的父/子关系(Rails 3.2和ElasticSearch> v1)

  26. 26

    关于美元符号:美元符号内的美元符号?

  27. 27

    货币检查是欧元还是美元

  28. 28

    货币检查是欧元还是美元

  29. 29

    在PHP中查找以美元符号$开头和结尾的单词

热门标签

归档