[英]Does elasticsearch ignore dot in match_phrase?
我正在使用match_phrase
進行如下搜索:
"match_phrase": {
"name": "XX .S"
}
並找到名稱為"name" : "XX S&#",
和"name": "XX S Ltd"
。 似乎忽略了.
在搜索中。 經過一些調查,當它標記字符串中的單詞時,該dot
可能會在索引期間被條紋化。 如果這是真的,我如何讓搜索將dot
視為常規字符? 如果它不是真的,是什么原因造成的,我該如何解決?
我期待的是我可以通過查詢XX .S
得到以下響應
A XX .S B
XX .S
XX .S11
XX .Sa
到目前為止,我發現的關於match_phrase
的唯一問題是它沒有 escape .
. 它適用於其他情況。
創建索引時,您需要將“名稱”定義為關鍵字類型。 默認為文本類型,將由彈性搜索引擎標記。
name": {
"type": "keyword"
}
使用通配符:
{
"from": 0,
"size": 200,
"query": {
"bool": {
"filter": [
{
"bool": {
"must": [
{
"wildcard": {
"name": {
"wildcard": "*XX .S*",
"boost": 1
}
}
}
],
"adjust_pure_negative": true,
"boost": 1
}
}
],
"adjust_pure_negative": true,
"boost": 1
}
},
"_source": {
"includes": [
"name"
],
"excludes": []
}
}
您可以通過引入/(而不是替換)這樣的更多keyword
字段來保留舊的搜索邏輯。
{
"foo": {
"type" "text",
"fields": {
"raw": {
"type": "keyword"
}
}
}
}
您可以使用foo.raw
字段執行全文搜索。
這是您需要查詢以獲得結果的內容
{
"query": {
"wildcard": {
"foo.raw": "*XX .S*"
}
}
}
在https://www.elastic.co/guide/en/elasticsearch/reference/7.5/multi-fields.html查看更多詳細信息
最好的事物,
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.