質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Elasticsearch

Elasticsearchは、クラウド向けに構築された、RESTful な API を提供する分散型のサーチエンジンアプリケーションです。

INSERT

INSERTとは、行を追加する、コンピュータのデータベース言語SQLにおけるデータ操作言語(DML)ステートメントの1つである

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

2825閲覧

Elasticsearch で alias を使用しての index 切替後に検索が0件になる

ochame

総合スコア12

Elasticsearch

Elasticsearchは、クラウド向けに構築された、RESTful な API を提供する分散型のサーチエンジンアプリケーションです。

INSERT

INSERTとは、行を追加する、コンピュータのデータベース言語SQLにおけるデータ操作言語(DML)ステートメントの1つである

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2020/01/28 03:36

編集2020/01/28 03:42

Elasticsearch で alias を使用しての index 切替を試していたのですが、
切替を実行後、Elasticsearch の search api へ、検索を投げた所、
検索結果が0件になってしまい結果が返って来なくなりました。

切替前のfield名と切替後のfield名は基本的には同じ状態(1つだけ field追加しました)なので、
切替前の query で問題ないかと思っていたのですが、検索結果は0件でした。

実施する前の状態と実施後の状態は下記になります。

1. index 切替前

# index 一覧 GET _cat/indices green open index-v1 abcdefghijklmnopqrstu 5 1 1000 0 90.0mb 90.0mb ← テーブル名以外は適当です green open index-v2 abcdefghijklmnopqrstu 5 1 2000 0 90.0mb 90.0mb ← テーブル名以外は適当です
# alias 一覧 GET alias-name/_alias { "index-v1" : { "aliases" : { "alias-name" : { } } } }
# id 検索 GET alias-name/type-name/id0001 又は GET index-v1/type-name/id0001 { "_index" : "index-v1", "_type" : "type-name", "_id" : "id0001", "_version" : 1, "_seq_no" : 0, "_primary_term" : 1, "found" : true, "_source" : { "id" : "id0001", "name" : "Test Name 1", ・ ・ ・ } }
# search api 検索(query 無し) GET alias-name/_search 又は GET index-v1/_search { "took" : 9000, "timed_out" : false, "_shards" : { ・ ・ ・ }, "hits" : { "total" : { "value" : 1000, "relation" : "eq" }, "max_score" : 1.0, "hits" : [ { "_index" : "index-v1", "_type" : "type-name", "_id" : "id0001", "_score" : 1.0, "_source" : { "id" : "id0001", "name" : "Test Name 1", ・ ・ ・ } }, { "_index" : "index-v1", "_type" : "type-name", "_id" : "id0002", "_score" : 1.0, "_source" : { "id" : "id0002", "name" : "Test Name 2", ・ ・ ・ } }, { "_index" : "index-v1", "_type" : "type-name", "_id" : "id0003", "_score" : 1.0, "_source" : { "id" : "id0003", "name" : "Test Name 3", ・ ・ ・ } }, 以下取得件数分繰り返し ・ ・ ・ } ] } }
# search api 検索(query 有り) GET alias-name/_search 又は GET index-v1/_search { "query": { "bool": { "must": { "match_all": {} }, "filter": [ { "term": { "id": "id0002" } } ] } } }
--- 取得結果 --- { "took" : 2, "timed_out" : false, "_shards" : { ・ ・ ・ }, "hits" : { "total" : { "value" : 1, "relation" : "eq" }, "max_score" : 1.0, "hits" : [ { "_index" : "index-v1", "_type" : "type-name", "_id" : "id0002", "_score" : 1.0, "_source" : { "id" : "id0002", "name" : "Test Name 2", ・ ・ ・ } } ] } }

2. index 切替

※ 事前に bulk insertindex-v2というindex名で構築済み

# alias 切替 POST _aliases { "actions": [ { "remove": { "index": "index-v1", "alias": "alias-name" } }, { "add": { "index": "index-v2", "alias": "alias-name" } } ] }
# 古いindex 削除 DELETE index-v1 { "acknowledged" : true }

3. index 切替後

# 古いindex 削除確認 GET _cat/indices green open index-v2 abcdefghijklmnopqrstu 5 1 2000 0 90.0mb 90.0mb
# alias が切り替わってる事を確認 GET alias-name/_alias { "index-v2" : { "aliases" : { "alias-name" : { } } } }
# id 検索 GET alias-name/_doc/id0001 又は GET index-v2/_doc/id0001 { "_index" : "index-v2", "_type" : "_doc", "_id" : "id0001", "_version" : 1, "_seq_no" : 0, "_primary_term" : 1, "found" : true, "_source" : { "id" : "id0001", "name" : "Test Name 1", ・ ・ ・ } }
# search api 検索(query 無し) GET alias-name/_search 又は GET index-v2/_search { "took" : 1, "timed_out" : false, "_shards" : { ・ ・ ・ }, "hits" : { "total" : { "value" : 2000, "relation" : "eq" }, "max_score" : 1.0, "hits" : [ { "_index" : "index-v2", "_type" : "_doc", "_id" : "id0001", "_score" : 1.0, "_source" : { "id" : "id0001", "name" : "Test Name 1", ・ ・ ・ } }, { "_index" : "index-v2", "_type" : "_doc", "_id" : "id0002", "_score" : 1.0, "_source" : { "id" : "id0002", "name" : "Test Name 2", ・ ・ ・ } }, { "_index" : "index-v2", "_type" : "_doc", "_id" : "id0003", "_score" : 1.0, "_source" : { "id" : "id0003", "name" : "Test Name 3", ・ ・ ・ } }, 以下取得件数分繰り返し ・ ・ ・ } ] } }
# search api 検索(query 有りかつ match_all:{} の場合) GET alias-name/_search 又は GET index-v2/_search { "query": { "bool": { "must": { "match_all": {} } } } }
--- 取得結果 --- { "took" : 2, "timed_out" : false, "_shards" : { ・ ・ ・ }, "hits" : { "total" : { "value" : 1, "relation" : "eq" }, "max_score" : 1.0, "hits" : [ { "_index" : "index-v2", "_type" : "_doc", "_id" : "id0001", "_score" : 1.0, "_source" : { "id" : "id0001", "name" : "Test Name 1", ・ ・ ・ } }, 以下取得件数分繰り返し ・ ・ ・ } ] } }
# search api 検索(query 有りかつ filter 指定有りの場合) GET alias-name/_search 又は GET index-v2/_search { "query": { "bool": { "must": { "match_all": {} }, "filter": [ { "term": { "id": "id0002" } } ] } } }
--- 取得結果 --- { "took" : 0, "timed_out" : false, "_shards" : { ・ ・ ・ }, "hits" : { "total" : { "value" : 0, "relation" : "eq" }, "max_score" : null, "hits" : [ ] } }

と、上記の様に filter 有りだと 検索結果が0件になります。
aliassettingmappingの定義に問題があるのか、bulk insert時に問題があるのか原因がわからずです。

どなたか、ご教示頂けると助かります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

mapping 定義が問題のようでした。

# 修正前 { "mappings": { "properties" : { "_doc": { "properties" : { "id" : { "type" : "keyword" }, "name" : { "type" : "keyword" }, ・ ・ ・ } } } }
# 修正後 { "mappings": { "properties" : { "id" : { "type" : "keyword" }, "name" : { "type" : "keyword" }, ・ ・ ・ } } } }

と、type 名の指定を明示的に行ってたのが問題でした。

投稿2020/01/29 00:48

編集2020/01/29 01:07
ochame

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問