[英]Searching a number in a string field with query_string on Elasticsearch
在其他文本字段中,我的Elasticsearch索引中包含以下字符串字段:
"user": { "type": "string", "analyzer": "simple", "norms": { "enabled": False } }
它充滿了典型的用戶名,例如“ simon”。
使用query_string,我可以將針對“其他搜索字詞”的搜索結果限制為該特定用戶:
'query': { 'query_string': { 'query': 'user:simon other search terms' } }
默認運算符設置為“ AND”。 但是,如果用戶名僅包含一個數字(保存並索引為字符串),Elasticsearch似乎會忽略“ user:...”語句。 例如:
'query': { 'query_string': { 'query': 'user:111 other search terms' } }
產生與以下結果相同的結果
'query': { 'query_string': { 'query': 'other search terms' } }
任何想法可能是什么原因或如何解決?
您正在使用simple
詞器。 如文檔所述 :
使用小寫記號生成器構建的簡單類型的分析器。
小寫標記器使用字母標記器和小寫標記過濾器 。 特定測試數據的問題在於字母標記器將文本分為非字母形式。 數字是非字母。 Java API中的此方法定義了確切的字母。 相反, Java API中的此方法定義了確切的數字。
您可能需要查看standard
標記器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.