1

간단한 질문 : 내 elasticsearch 엔진에 다중 색인이 postgresql에 의해 logstash를 사용하여 미러링됩니다. ElasticSearch는 퍼지 검색에 적합하지만 인덱스에서 쿼리를 처리해야하는 참조를 사용해야합니다.ElasticSearch 멀티 색인 쿼리

Index A: 
{ 
    name: "alice", 
    _id: 5 
} 
... 

Index B: 
{ 
    name: "bob", 
    _id: 3, 
    best_friend: 5 
} 
... 

어떻게 쿼리 않습니다

필드 이름이 이름을 "A"

로 시작하는 "best_friend"에 의해 참조 "B"와 인덱스 A를 시작하는 인덱스 B의 모든 경기를 가져옵니다

신축성있는 검색에서도 이것이 가능합니까?

+0

(https://stackoverflow.com/questions/36915428/how-to-setup-elasticsearch-index-structure-with-multiple-entity-bindings/36982705# 36982705) 나중에 더 잘 쿼리 할 수 ​​있습니다. – Val

답변

1

예, 가능합니다. POST A,B/_search은 여러 색인을 쿼리합니다.

특정 인덱스에서 레코드와 일치하기 위해서는 아래 _index

meta-data field이 이름을 "B"와 인덱스 A를 시작으로 필드 이름과 인덱스 B의 모든 경기를 얻을 수있는 쿼리입니다 사용할 수 있습니다 "a"로 시작하여이지만 일반적으로 관계형 SQL 데이터베이스 에서처럼 참조과 일치하지 않습니다. Elastic에서 외부 키 참조 일치 (조인) 및 모든 NoSQL은 귀하의 책임 AFAIK입니다. 귀하의 필요에 가장 잘 맞는 방법을 찾으려면 Elastic Definitive Guide을 참조하십시오. 마지막으로, NoSQL은 SQL이 아니므로 마음을 바꾸십시오.

POST A,B/_search 
{ 
    "query": { 
    "bool": { 
     "should": [ 
     { 
      "bool": { 
      "must": [ 
       { 
       "prefix": { 
        "name": "a" 
       } 
       }, 
       { 
       "term": { 
        "_index": "A" 
       } 
       } 
      ] 
      } 
     }, 
     { 
      "bool": { 
      "must": [ 
       { 
       "prefix": { 
        "name": "b" 
       } 
       }, 
       { 
       "term": { 
        "_index": "B" 
       } 
       } 
      ] 
      } 
     } 
     ] 
    } 
    } 
} 
당신은 [데이터를 비정규]에 대해 생각해야
+0

감사합니다. @mjalil && Val - 데이터 구조를 평평하게 만듭니다. – christian667