2017-08-28 8 views
0

連絡先文書を含む電話番号オブジェクトを含むelasticsearchインデックスがあります。 JSONは、このように保存されます。私たちは実装していますC#アプリケーションを使用してインデックスを照会しているC#でElasticsearchの電話番号オブジェクトを検索しています

, 
     "phone": { 
     "properties": { 
      "area": { 
      "type": "string" 
      }, 
      "country": { 
      "type": "string" 
      }, 
      "number": { 
      "type": "string" 
      } 
     } 
     }, 

"contactId": "fd71b8e0-c3dd-4861-a45d-6917fdb48038", 
"phone": { "country": "123", 
      "area": "202", 
      "number": "4567" 
      }, 
"type": "business" 

電話オブジェクトについては、このドキュメントで使用されるマッピング形態であり、ネスト。アプリケーションでは、クライアント呼び出しの一部として使用されるオブジェクトNest SearchDescriptorを作成します。 1232024567のような文字列を検索しているときに、SearchDescriptorに電話番号を検索するにはどうすればよいですか?あなたはこの問題を解決する可能性があった

+0

[Elasticsearch.Net and NEST](https://www.elastic.co/guide/en/elasticsearch/client/net-api/5.x/index.html)のオンラインドキュメントを参照してください。 ) – MethodMan

+0

はい、私は解決策の実装方法についてまだ不明確なドキュメントを見直しました。 – CorribView

答えて

1

一つの方法は、それが検索することが利用できるようにするが、それから再構成することができるので、それを保存しないインデックスすなわち完全な番号を記憶もインデックスではなくでありますareacountryおよびnumberを保存してください(インデックスにもなる可能性があります)。

country,areaおよびnumberは、インデックス時間に完全な電話番号から常に決定することができる。常にパターンに準拠した既知の形式であれば、完全な電話番号をインデックスに登録して格納することでこれに別の方法でアプローチすることができます。,areaおよびnumberが検索に必要な場合は、完全な電話番号をmulti-fieldインデックス時にカスタムのアナライザをcountry,areanumberの各フィールドに入力して、インデックス作成のための正しい用語を抽出します。検索時にマルチフィールド内のこれらのフィールドを使用してcountry,areaおよびnumberの値との一致を見つけることができます。

+0

今すぐあなたの返信をお読みください! 私が行ったのは、3つのフィールドを連結して(一部の特殊文字を削除して)新しいフィールドを作成し、それを実際に検索されているフィールドとして使用することでした。つまり、複数のサブフィールドにまたがる文字を含む文字列を入力することができました。 これはあなたが提案しているものと少し違っていると思います。マルチフィールドの仕組みを見ていきます。 – CorribView

関連する問題